Kako pretvoriti Hex -> Asm -> C

S

stefan_d6

Guest
Pred kratkim sem delo z Cygnal's UC in uVision uporabo ali Silabs IDE pisanje kode.Najdem firmware za napravo, ki ga želim, da preuči globlje, vendar firmware je v BIN formatu, ki jo lahko enostavno pretvoriti v HEX.Ampak jaz ne vem, kako spremeniti to v obliki, ASM in več možnosti pri C. sem uporabil rastavljanja D51 dobiti ASM format iz HEX vendar so spremenljivke, kot rb0r4, rb2r1, acc itd, da prevajalnik ne prepozna.

Torej, kako priti berljivost kodo?

 
Obstaja skoraj ni '51 monter, ki ne prepozna ACC ...Ali ste pozabili vključiti datoteko z glavo standardne ločljivosti SFR, če je taka zahteva.

Prav tako lahko vključite druge datoteke opredelitve, ki opredeljujejo neposredno naslovljena registrov, na primer
rb0r4 EQU 04h
rb2r1 EQU 11h
itd

Vendar so ti spomin lokacijah po vsej verjetnosti uporabljajo kot spremenljivke, tako da se bolje z nadzorno datoteko d52 opredeliti "berljiva" imena teh spominskih lokacij, glede na njihovo funkcijo v omenjenih kodo.

Končno, čeprav je neke vrste uradni prevod v C je možno dokončno (uradno je mogoče prevesti iz katerega koli jezika v kateri koli drug jezik), je nemogoče izterjati prvotno strukturo visoki stopnji znanja jezika, tako da ne bi imela pravi pomen ...To je veliko bolje preučiti ASM različico.

wek

 
OK, tukaj je nekaj izvleček iz D52.Bi opišete, kaj pomeni za t3, R6 ali acc.7.Daj nekaj nasvetov, kako prebrati.

Code:eek:rg 0abh

;

ljmp X043f; 00ab 02 04 3f ..?

;

X00ae: mov t3, # 0deh; 00ae 75 ff de u. ^

mov t3, # 0adh; 00b1 75 ad ff u. --

mov 0b1h, # 67h; 00b4 75 b1 67 u1g

X00b7: mov, 0b1h; 00b7 e5 b1 e1

JNB acc.7, X00b7; 00b9 30 e7 fb 0g (

CLR; 00bc e4 d

mov r7,; 00bd ff.

mov r7,; 00be fe ~

X00b7: inc r7; 00bf 0f.

 
Dragi stefan_d6,

Prosimo, da se ne počutijo užaljene, vendar boste morda morali narediti nekaj osnovnih '51 ASM branje.org 0abh naslednjo kodo bo prevedena iz naslova 0abh na

;

ljmp X043f; 00ab 02 04 3f ..? skok v daljino z nalepko X043f (na naslovu 043fh)

;

X00ae: mov t3, # 0deh; 00ae 75 ff de u. ^ mov za SFR t3 (na naslovu 0FFh) takojšnja vrednost 0deh - funkcija tega SFR odvisna predvsem '51 izvedeni finančni instrument, ki ga uporabljate (in bi bilo njegovo ime je drugačno , ne t3), to ni standard '52 SFRmov t3, # 0adh; 00b1 75 ad ff u. - glej zgorajmov 0b1h, # 67h; 00b4 75 b1 67 u1g mov za SFR na naslovu B1h takojšnje vrednosti 67h - spet smislu tega SFR odvisna od '51 izvedenihX00b7: mov, 0b1h; 00b7 e5 b1 e1 bere vrednosti iz SFR na naslovu 0B1h na akumulatorJNB acc.7, X00b7; 00b9 30 e7 fb 0g (if košček 7 akumulator nič, skok na etiketi X00b7 (z drugimi besedami, zadnji 2 vrstici pomeni: zanka do 7 bit of SFR 0B1 gets set)CLR; 00bc e4 d jasen akumulatorja (nastavljen na 0)mov r7,; 00bd ff. premakniti vsebine akumulatorja v register R7mov r7,; 00be fe ~ dittoSeveda, to je lahko (in verjetno je - na osnovi čudno vsebino) podatek, tabele ali kaj podobnega - to je točno "pomeni" ki jih ni mogoče rekonstruirati v "visoki ravni" samodejno ...

wek

PS.Katero različico d52 uporabljate?

 
Mislim, da ste se nanaša na "decompiler".Nekateri projekti za exe-> c za x86 stroje obstajajo tam zunaj.Nisem še videl ničesar, čeprav 8051.

 

Welcome to EDABoard.com

Sponsor

Back
Top