- Prohardver app (nem hivatalos)
- Samsung Galaxy S20 Ultra 5G - nagy ügy
- Nem maradhat AI nélkül a strapaszekció sem
- Xiaomi 14T Pro - teljes a család?
- Milyen okostelefont vegyek?
- Keretmentesít a Galaxy S25 FE
- Samsung Galaxy Z Flip5 - ami kint, az van bent
- Telekom mobilszolgáltatások
- iPhone topik
- Honor Magic6 Pro - kör közepén számok
Aktív témák
-
kisfurko
senior tag
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ű...
É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
Hirdetés
- DDR5 16GB 8GB 32GB 4800MHz 5600MHz RAM Több db
- DELL PowerEdge R640 rack szerver - 1xGold 6138 (20c/40t, 2.0/3.7GHz), 64GB RAM,4x1G RJ, HBA330, áfás
- Tablet felvásárlás!! Samsung Galaxy Tab A8, Samsung Galaxy Tab A9, Samsung Galaxy Tab S6 Lite
- Bomba ár! HP EliteBook 830 G5 - i5-8G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- 4 év gari - magyar bill. - Lenovo ThinkPad Z13 G1 - AMD Ryzen R7 Pro 6850U, 13.3" 2.8K OGS érintő
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest