C - offset položky ve struktuře
Moderátor: Moderátoři
Viz např http://www.8bity.cz/
Bohužel myslím, že offset ve struktuře v symbolické proměnné asi nezískáš a budeš muset nahardkódit.
Máš někde stránky projektu?
https://github.com/EtchedPixels/FUZIX/b ... evel-z80.s
Parametry si pak předávájí nějak takto
http://fivedots.coe.psu.ac.th/~cj/masd/ ... oc-21.html
Jinak to předávání parametrů v uvedeném odkazu je pro 8051, pro Z80 se parametry předávají přes zásobník. Pouze pokud se funkce, mající jen jeden parametr, označí __z88dk_fastcall, předá se parametr v registrech (DEH)L stejně jako se předává návratová hodnota. Ale nefunguje to vždy, mají v tom SDCC bug, pokud má funkce lokální proměnné, tak si ten předávaný parametr v HL přepíšou při vytváření rámce v zásobníku. Pro funkce celé napsané v assembleru to ale použít jde a používám to, funkci to docela zkrátí a zrychlí. Nicméně to neřeší problém z úvodu tohoto vlákna.
http://www.avrbeginners.net/new/wp-content/uploads/2011/08/avrbeginners_30_Accessing_C_Structs_in_Assembler_1.0.1.pdf
Kód: Vybrat vše
#define _ASMDEFINE(sym, val) asm volatile \
("\n-> " #sym " %0 \n" : : "i" (val))v SDCC prostě nedám, SDCC neumí inline assembler s parametrama a bez toho celá ta finta nefunguje.