assembler v C

Vojta Filip vojta na kolej.mff.cuni.cz
Pátek Březen 19 19:39:18 CET 1999


Potrebuji vlozit do C assembler. Vse je OK, akorat kdyz z nej chci volat
nejakou dalsi funkci (a tu davam jako vstupni parameter) nastavaji
problemy:

void yield(void) {}
main() {
 asm ( "call %0\n" : : "g" (yield) );   
}

GCC toto prelozi jako "call $yield", coz je nesmysl a skonci to chybou
assembleru. Prelozeno jako C++ je to naprosto v pohode (call yield__Fv).
Pokud je yield ukazatel na funkci (a vlastne asi az tady to ma jako
parametr opodstatneni) vse se prelozi spravne (jak v C tak v C++).

Takze otazka - proc je prvni pripad spatne? A pokud je chyba na me
strane (predpokladam, ze ano) proc jenom v C?

  Vojta


Další informace o konferenci Linux