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