X
Auf deiner Seite findet man wirkich noch einiges
etwas anders. Ich versuche deine Funktion zu meinem kernel dazu zu linken. leider klappt das nicht so ganz:
unsigned long GetMemSize();
void mem::Initialize()
{
unsigned long size = GetMemSize();
}
dazu habe ich dann in die datei mem.asm folgenden code gepackt:
[Bits 32]
global _GetMemSize
_GetMemSize:
push ebp
mov ebp, esp
mov eax, 0 ;EAX ist Zähler für die MBs
mov edx, 0x1EFFFC ;EDX auf 3 Bytes vor die 2 MB Grenze setzen
.1:
inc eax
mov DWORD [edx], 0xAAAAAAAA ;0xAAAAAAAA an die Speicherstelle schreiben
mov ebx, [edx] ;Speicherstelle wieder lesen
add edx, 0x100000 ;Adresse um 1 MB erhöhen
cmp ebx, 0xAAAAAAAA ;Stimmt gelesener Wert mit dem geschriebenen überein?
je .1
mov esp, ebp
pop ebp
ret
Dann hab ich es kompiliert. alles ohne probleme.
nasmw -f aout src\mem.asm -o obj\asmmem.o
Aber leider gottes beschwert sich der linker:
undefined reference to `GetMemSize()'
Hier der Linkeraufruf (habe die restlichen .o dateien raus gekürzt)
ld -g [...] obj\asmmem.o obj\mem.o
Weißt jemand zufällig, warum das nicht klappt ?
Danke