hallo,
ich übe zur Zeit "Mischcode" schreiben, d.h. einen Kernel mit nasm und gcc.
Ich kann jetzt schon in c geschriebene functs aus asm aufrufen. Aber umgekehrt ist ein Problem:
GCC ruft eine falsche Adresse auf.
Wenn ich in einem nasm-code zum beispiel schreibe
...
global _setcursor
_setcursor:
...
und im c-code:
..
extern void setcursor(int x, int y);
..
setcursor(6, 2);
..
in der Map-Datei steht dann etwa:
0x7e80 _setcursor
aber der aufruf aus der c-datei heraus wird assembliert in
call 0x7e9a
das sind 0x1a bytes weiter vorne.
Wie kommt das?
wie kann ich das umgehen?
danke
danny
ps:
ist mein erster beitrag hier!