Käännellessäni C-kielistä ohjelmaani GCC valittaa:
Assembler messages:
Error: suffix or operands invalid for 'lcall'
Ohjelmani näyttää kyseiseltä kohdin tältä:
void TimerHandler() { Counter++; OriginalTicks+=TicksPerCall; if(OriginalTicks>=65536) { OriginalTicks-=65536; __asm__ __volatile__ (" pushfl lcall %0 " : : "g" (OldTimerHandler)); } else { outportb(0x20, 0x20); } }
Onko koodissa joku virhe vai eikö kääntäjä vain ymmärrä?
Kuinka saan korjattua virheen?
Koodi on pöllitty suoraan laamatutista, ja kiinnostaisi tietää onnistuuko muilla tuon timertst.c:n kääntäminen ilman aiemmin mainittua virheilmoitusta?
Komentoriviltä käännän komennolla:
gcc timer.c timertst.c -o timertst.exe
Itselläni ei ole oikein edes käsitystä, mitä funktion pitäisi tehdä, joten sitä minulta on turha kysyä.
Laamatutin EXAMPLES-hakemiston 'README.EXP'-tiedostosta:
lainaus:
Lisäksi timertst.exe pitää kääntää:
gcc -Wall -s timer.c timertst.c -o timertst.exe
lainaus:
Lisäksi timertst.exe pitää kääntää:
gcc -Wall -s timer.c timertst.c -o timertst.exe
GCC antaa aiemmin kertomani virheilmoituksen myös koittaessani tuota komentoa.
Käännät siis DJGPP:llä?
Kyllä vain.
Aihe on jo aika vanha, joten et voi enää vastata siihen.