C - offset položky ve struktuře

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#16 Příspěvek od frpr666 »

Tady už je něco podobného hotovo i s baterkou a s displejem. Ale není to Z80.
https://tinycircuits.com/products/tinyscreenplus

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#17 Příspěvek od lesana87 »

Já na tom nic podobného nevidím, ale to je jedno.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#18 Příspěvek od lesana87 »

Nečekám žádnou 100% podporu nějaké komunity. Jen jsem položila jeden dotaz, jak něco zaonačit v C + asm.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#19 Příspěvek od berk »

Mě se ten projekt moc líbí. Mysím že smysl má - minimálně edukativní. Časem z toho může být i praktická záležitost - jsou lidé a celé komunity kde se staví repliky starých počítačů s různými vylepšeními.

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?

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#20 Příspěvek od lesana87 »

Nemám.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#21 Příspěvek od berk »

Ok. Až to bude v nějaké fázi, kdy s tím budeš chtít ven, tak dej vědět.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#22 Příspěvek od lesana87 »

Až s tím budu chtít ven, tak si to vezmu na zahradu. Ale lepší bude to nepřenášet, aby mi neupadl nějaký drátek, blbě se to pak hledá.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#23 Příspěvek od berk »

To je tak, když se to dělá v assembleru - pak to není přenosný ;-)

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#24 Příspěvek od berk »

Ještě koukám jak to řeší v tom FUZIXu a tam to mají přes rutiny v s souborech

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

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#25 Příspěvek od lesana87 »

Jestli je to jako inline nebo v samostatným souboru je celkem jedno, prochází to nakonec stejným assemblerem. V inline se dá aspoň použít ten #define ..., oddělený soubor ho nevidí. Stejně tam nikde nevidím, že by dokázali do toho assembleru dostat offset položky ve struktuře z C, ale po pravdě se v tom moc nevyznám. :oops:

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.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#26 Příspěvek od berk »

No já myslím, že v tom projektu FUZIXu je příkladů volání pro Z80 celá řada. Záleží jen na tobě jestli to tak chceš dělat nebo ne.

K té otázce z úvodu - pokud chceš offset v symbolické proměnné, tak to bohužel neporadím.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#27 Příspěvek od lesana87 »

Nevím, co myslíš těmi příklady volání a jak to souvisí s mým dotazem.

Uživatelský avatar
berk
Příspěvky: 107
Registrován: 07 úno 2014, 01:00

#28 Příspěvek od berk »

Pokud nesouvisí, tak jsem asi něco špatně pochopil. Pusť to z hlavy.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#29 Příspěvek od Zmije »

Tohle je sice pro gcc, ale možná by se tím dalo inspirovat
http://www.avrbeginners.net/new/wp-cont ... _1.0.1.pdf

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#30 Příspěvek od lesana87 »

Dík, ale to

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. :(

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“