Stránka 1 z 1
Přístup do globální proměnné z ASM - VYŘEŠENO
Napsal: 17 kvě 2011, 17:14
od Pejsvidek
Zdravím,
mám napsaný program v C a na zápočet potřebuji mít část i v ASM, problém je, že potřebuji přistoupit na globální proměnnou. Programuji to v CodevisionAVR a ten asi nezná příkaz EXTERN. Píše mi to, že nezná proměnnou bCekej100, přitom podle různých zdrojů se dá přistupovat ke globálním normálně i bez příkazu extern. Nevíte někdo jak to vyřešit ? do přílohy dám txt s kódem.
Děkuji
Napsal: 17 kvě 2011, 17:23
od Andrea
A kde máš tu proměnnou definovanou?
Napsal: 17 kvě 2011, 17:25
od Pejsvidek
V kódu nad tim, mám to definovaný takhle:
unsigned char bCekej100;
Napsal: 17 kvě 2011, 17:26
od Andrea
Tak to tam asi nemá být ten IMPORT, pokud je to vložený assembler a ne oddělený překlad.
Napsal: 17 kvě 2011, 17:28
od Pejsvidek
Je to vložený asembler, ale bez EXTERN to zase píše:
Undefined symbol bCekej100
Napsal: 17 kvě 2011, 17:30
od Andrea
Dyť píšeš, že to EXTERN nezná.
Napsal: 17 kvě 2011, 17:33
od Pejsvidek
No však, EXTERN to nezná vůbec. Tam prej vůbec nemusí být, tak sem ho smazal. Ale bCekej100 to stejnak nepozná, nevim jestli při tý deklaraci to nemam ještě nějak jinak zapsat. Podle manuálu by to mělo takhle fungovat, ale nefunguje.
Napsal: 17 kvě 2011, 18:05
od mtajovsky
Napsal: 18 kvě 2011, 06:52
od AB1
V asm má proměnná před sebou podtržítko.
Kód: Vybrat vše
unsigned char var1 = 5;
void main(void)
{
#asm
lds r0, _var1
#endasm
Pokud je v konfiguraci zatrženo "Automatic Register Allocation",
proměnná musí být deklarována jako volatile.
Napsal: 18 kvě 2011, 23:36
od Zmije
Zajímavé! Já do teď o téhle možnosti nevěděl. Myslel sem si, že existují dva způsoby a) inline assembler v GASu nebo b) libovolný assembler co umí generovat .obj a pak se poprat s make, aby to linker dal dohromady. Jak to vlastně funguje? To preprocesor pomocí maker převede na GAS, nebo to kompiluje jiným assemlerem, nebo nějakým kouzlem přepne as na intel syntaxi?
Napsal: 19 kvě 2011, 02:20
od Burajko
Napsal: 19 kvě 2011, 05:58
od AB1
Zmije:
Tady se bavíme o překladači CodeVisionAVR.
Ten nemá s GAS nic společného.
Napsal: 19 kvě 2011, 22:30
od AB1
K Burajkovi bych pododkl jenom toto:
Ukaž mi, kde v manuálu Cvavr jsi našel odpověď na tuto otázku.
Napsal: 20 kvě 2011, 05:04
od Burajko
No ja som ho necital,ale urcite existuje manual.Aspon hitech,zilog,texas ma taku dobru zvyklost.
Napsal: 22 kvě 2011, 09:28
od Pejsvidek
Díky moc AB1, chybělo mi tam jenom to podtržítko