Portál AbcLinuxu, 10. května 2025 05:28
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
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...)
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.
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
... 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.
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
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.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.