Portál AbcLinuxu, 10. května 2025 05:28

Dotaz: Převod ASM do C pro Atmel

31.1.2009 19:32 Jan Sršeň | skóre: 1
Převod ASM do C pro Atmel
Přečteno: 1171×
Odpovědět | Admin

Dobrý den

je možnost převedení programu pro Atmel AT89C2051 v Assembleru do zdrojového kódu v jazyce C ? například programem gcc nebo nečím podobným ?

Děkuji mnohokrát

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.1.2009 20:01 Mti. | skóre: 31 | blog: Mti
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel
Odpovědět | | Sbalit | Link | Blokovat | Admin

Mas na mysli automat, ktery za Tebe prepise neco z asm do C? Necekal bych. Algoritmus by musel byt sileny a vysledek by i tak byl hrozny. Uz preklad z binaru do assembleru je silena zalezitost, protoze Ti ten automat "ocisluje" temer vsechny pametove mista "posvojem". GCC slouzi k opaku teto cinnosti... (navic 2051 je dost malinkaty procesor... je otazka jak moc se tam s C otocis... jiste, taky pouzivam gcc na ATmga48, ale aj tak...)

Vidim harddisk mrzuty, jehoz hlava plotny se dotyka...
1.2.2009 09:12 Jan Sršeň | skóre: 1
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel

Ano potřeboval bych aby zdrojový kód který sem napsal v ASM mám ho i v HEXA , tak ho přepsat do C, ale poněvač je to dlouhej program tak sem si chtěl usnadnit práci nebo alespoň část tej práce, a někde sem četl něco v tom smyslu, že nějaká aplikace pro to je či nějakej příkaz, ale nenašel sem ho ovšem o gcc tam bylo zmíněno také .Do C by se ten program přeložit samozřejmě dal ne vše, ale převážná většina.

1.2.2009 10:53 Mti. | skóre: 31 | blog: Mti
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel

hm... v tom pirpade - jestli je ten program na hranici mista v tom procesoru uz ted (v asm), tak pocitej s tim, ze v C se Ti trosicku nafoukne, ikdyz to budes psat rucne a strasne usporne :-)    (do 2051 prece nemuze byt dlouhy program :-D... binar max 2kB )

A ten hex je k "nicemu", protoze tam je tech informaci jeste min (a vyrobis ho z cehokoliv). Ale mozna nekdo o necem vi.

Uz jenom kdyz si predstavim, ze se (v asm) s oblibou nechavaji navratove hodnoty malych funkci i ve flagoch (treba Z/C)... to by v c moc neproslo. Ten program by musel pochopit(!) co to dela, protoze tupe nahrazovat instrukce citelnym kodem proste nepujde.

Vidim harddisk mrzuty, jehoz hlava plotny se dotyka...
1.2.2009 10:57 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel
  1. Takovéto věci se jmenují decompilery. Existují třeba na ten kód, co běží v JVM. Ale člověkem psaný ASM bude těžko něco luštit. Muselo by to obsahovat docela dost AI. Zkus se podívat na cizí asm a přepisovat ho do C. Obecně, je velmi obtížný úkol pochopit smysl textu a interpretovat ho jiným jazykem.
  2. Nechápu, co tím chceš získat. Jenom určitě ztratíš optimalizaci, kterou možná zvládneš lépe, než gcc. Není to náhodou něco jako domácí úkol "přepište do C"?
  3. Jistě se bude hodit http://en.wikipedia.org/wiki/Calling_convention pro učení-se jak provazovat ASM a C. Samozřejmě, x86 není AVR, ale rozdíly nebudou obrovské.
  4. http://en.wikibooks.org/wiki/Reverse_Engineering by mohlo pomoci taktéž
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
1.2.2009 12:39 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel
Jistě se bude hodit http://en.wikipedia.org/wiki/Calling_convention pro učení-se jak provazovat ASM a C. Samozřejmě, x86 není AVR, ale rozdíly nebudou obrovské.
Omyl. Na x86 - alespoň podle toho odkazovaného článku - se parametry a návratové hodnoty předávají úplně jinak, se zásobníkem to nemá nic společného, dokud to opravdu nejde jinak.

http://www.gnu.org/savannah-checkouts/non-gnu/avr-libc/user-manual/FAQ.html#faq_reg_usage
Quando omni flunkus moritati
1.2.2009 17:42 Jary | skóre: 30 | blog: Jary má blog | Dům
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel

Děkuju za upřesnění. On zásobník se tam smz také někdy používá: Jestli ten odkazovaný text pochopil správně, tak parametry, které můžu předat v registrech r8 - r25 předám v nich a zbytek předám na stacku. Návratová hodnota je v registrech r24, r25,... podle velikosti.

.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky. GitHub
1.2.2009 20:07 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Převod ASM do C pro Atmel
Jj, přesně tak. Zásobník se využívá, když dojde místo v registrech (to jsem myslel tím, že když to nejde jinak)

Rozdíl oproti architektuře x86 je v tom, že vzhledem k počtu dostupných registrů není v drtivé většině případů vůbec potřeba zásobník použít. Na x86 naopak - minimálně zpočátku - šlo přes registry předat jenom pár proměnných a pak už se zásobník použít musel.
Quando omni flunkus moritati

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.