Aktív témák
-
válasz
Blackmate
#10
üzenetére
Hmm... Ha ennyire utálod az assembly-t, akkor miért mikrokontrollerekkel foglalkozol? Ha nem érted meg a mikrokontroller lelkivilágát, akkor hogyan akarsz C programot írni hozzá?
Egyébként, ha tényleg tanultál assembly-t, akkor csak elő kell venni a mikrokontroller doksiját, végigfutni az utasításkészletet, meg a regiszterkiosztást. Utána utasításról utasításra szépen lapozgatva a doksit simán megérted, mit csinál, pláne kommentezett kódnál.
Egyébként meg nem létezhet olyan tool, ami assemblyből C-be fordít, mert pl. flag-ek nincsenek kezelve a C-ben, már egy elágazást sem tudsz visszafordítani. Persze az adott processzorhoz lehet írni egy ilyet, de aki annyira ért hozzá, az simán összelinkeli a C kódot az assemlby-vel. Igazából nem is értem, minek C-be fordítani... -
Rover623
félisten
válasz
Blackmate
#10
üzenetére
Több gond is van...egy bő évtizede nem kódoltam C-ben, ezt az assembly-t meg pláne nem ismerem...
De mondjuk Pascal-ban be tudom mutatni.
Var
STACK : Array [....] of Byte; {hogy legyen mire hivatkozni, de lehet hogy nem is kell}
IN2BUF: Array [....] of Byte; {mit tudom én mekkora?}
IN2CS : Byte Absolute x:x;
OUT2CS : Byte Absolute x:x;
IN2BC,
OUT2BC,
SP,
DPTR,
R1,
R2,
R7,
A : Byte; {feltételezem 8 bites controller}
Begin
Start: {nem kell, de jól mutat...}
{a stack kezelést nem boncolgatnám, hosszú...}
DPTR := 0;
R7 := $64;
Fill:
A := R7; {szvsz felesleges, mert ez az akkumulátor}
IN2BUF[DPTR] := A; {közvetlenül mehetne bele az R7}
Inc(DPTR);
If (R7 <> 0) Then Goto Fill; {jujj de csúnya...}
R1 := 0;
R2 := 0;
A := $40;
IN2BC := A;
Loop:
A := IN2CS; {ez valami kitüntettett memóriacímen lévő beágyazott IO-nak tűnik}
{na itt már gond van, az ACC valami bitszintű compare utasításnak tűnik...}
If (A and 1) = 0 Then Goto serviceIN2;
A := OUT2CS;
If (A and 1) = 1 Then Goto Loop;
ServiceOUT2:
Inc(R2);
OUT2BC := A; {nem egy elegáns megoldás, A határozatlan?}
Goto Loop;{? csak találgatok sjmp-t illetően...}
ServiceIN2:
és így tovább....
End.
Tehát ismerni kellene a controller memóriakiosztását, a beágyazott IO regiszterek helyét, az assembly utasítások pontos jelentését...
C-ben a DPTR-en keresztüli címzést egészen jól le lehetne modellezni a ''kukacos'' pointerkezeléssel...
[Szerkesztve]
[Szerkesztve] -
Rover623
félisten
Szvsz egyszerű...
![;]](//cdn.rios.hu/dl/s/v1.gif)
Értelmezd a kódot és szépen írd meg C-ben...
Pl. minden regiszter egy változó lesz...
Értékadások, aritmetikai műveletek értelemszerűen...
Portműveletek szintén értelemszerűen...
Ha a ciklust felismered, egyszerűen meg lehet írni...
Másképp nem megy!!!
Gépesíteni ezt piszok nehéz...nem is nagyon láttam még ilyesmit...
Arra viszont számíts, hogy sokkal lassabb lesz mint az eredeti...
Erősen hardware közeli dolgokat meg (interrupt kezelés, DMA) igen nehezen és körültekintően lehet csak átültetni... -
Miracle
senior tag
ha megvannak az ASM eljarasok, akkor azokat C fuggvenyek implementaciojakent kell felhasznalnod, ezek a fuggvenyek lesznek a te figgvenykonyvtarad. de C fordito melle 99.999999% hogy mar letezik adott fuggvenykonyvtar, ennek kell utanajarni. legorrszabb esetben egy mail valami ezzel a mikrontrollerrel dolgozo cegnek/a fordito fejlesztojenek.
-
Miracle
senior tag
keress C forditot es fuggvenykonyvtarat a kontrollerhez.
de a te problemad tavol all a visszaforditastol. a rendszerhivasoknak nincs megfelflo c kodja. csak ha valaki keszitett hozzajuk egy konyvtarat, akkor lesznek konyvtari fuggvenyek.
de ha minden rendelkezesedre all c nyelven, akkor akar te is csinalhatsz fuggvenykonyvtarat
Aktív témák
- Debrecen és környéke adok-veszek-beszélgetek
- A fociról könnyedén, egy baráti társaságban
- Hobby elektronika
- exHWSW - Értünk mindenhez IS
- Fejhallgató erősítő és DAC topik
- Budapest és környéke adok-veszek-beszélgetek
- Home server / házi szerver építése
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- alza vélemények - tapasztalatok
- Milyen légkondit a lakásba?
- További aktív témák...
- Kingston HyperX Fury 2x4GB 2133MHz DDR4 kit / Beszámítás OK! / Akciós Ár!
- Eladó Sony PlayStation 5 (Slim) 1TB Digital Edition 2026.12-ig garanciával!
- ASRock B250M-HDV / MSI B150 PC Mate
- 250GB Sata SSD-k / Samsung 840 Evo / 850 Evo / CM871a / Kingmax /
- ASUS ROG G70S retro gamer laptop 17 dual GPU SLI ritka különlegesség
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
![;]](http://cdn.rios.hu/dl/s/v1.gif)


