assembler a GCC
Ladislav Vaiz
spam@nagano.cz
Pondělí Prosinec 4 09:41:29 CET 2006
Domnivam se, ze u GCC neplati ona povera o rychlejsim asembleru, ktera
pochazi z DOSovych kompilatoru od Borlandu.
U GCC na i386 se pouzivaji inline funkce, ktere jsou stejne efektivni jako
vlozeny assembler. Jmenuji se tusim inb() a outb(), kdyztak by to slo
dohledat presneji. Musite ale zapnout optimalizaci alespon -O2.
Kdyz tak koukam na vas vypis, co vubec kompilujete? Jestli nema byt
vysledkem binarka, ale "OBJ" modul, tak musite pouzit prepinac -c, jinak
se vam kod linkuje a proto CRT nemuze nait funkci main().
La'd"a
On Mon, 4 Dec 2006, HUDA wrote:
> Dobry den,
> zkousim pripojit kus programu v assebleru k programu napsanem v GCC (WinAvr)
> pro ATMEGA48. Cast napsana v C je kompilovana a chodi bez problemu.
> Ted jsem chtel napsat kousek casove kritickeho codu napsat v assembleru, ale
> nejde mi prelozit.
> Uz jsem vse vyhazel a zkousim jen tuto malou cast napsanou v assembleru a
> pripojenou k hlavni C casti.
>
> .equ PORTD,0x18
>
> cs1:
> sbi PORTD,2 ;Enable the CS1 of the display
> cbi PORTD,3 ;Disable the CS2 of the display
> ret
>
> cs2:
> cbi PORTD,2 ;Enable the CS2 of the display
> Sbi PORTD,3 ;Disable the CS1 of the display
> ret
> Nikde jsem nenasel *.inc soubor s definicemi, tak jsem to zatim nadefinoval.
> Kdyz dam nyni preklad, tak dostanu tuto hlasku:
>
> C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr4/crtm48.o: In
> function `__vectors':
> ../../../../../avr-libc-1.4.4/crt1/gcrt1.S:51: undefined reference to `main'
> make.exe: *** [TEST] Error 1
>
> Dekuji za kazdou napovedu.
> HUDA
>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list