1
Lowlevel-Coding / Probleme RM VESA initialisierung
« am: 21. June 2009, 21:16 »
hey Leute,
nach einer langen Pause mach ich jetzt mit meinem Kumpel wieder an unserem kleinen OS weiter...
Zur Zeit sind wir dabei, den VESA Modus über das Bios zu initialisieren (RM)... das ganze machn wir per inline-ASM, allerdings bringt der gcc-compiler folgende Fehlermeldung:
Parameter für gcc
gcc -masm=intel -m32 -ffreestanding -o C:\IUse\tmp\main.o -c main.c -Werror -nostdinc
Wir entwickeln jetzt unter Windoof, unter Linux kommt aber der selbe Fehler..........
Hier unser Code....
nach einer langen Pause mach ich jetzt mit meinem Kumpel wieder an unserem kleinen OS weiter...
Zur Zeit sind wir dabei, den VESA Modus über das Bios zu initialisieren (RM)... das ganze machn wir per inline-ASM, allerdings bringt der gcc-compiler folgende Fehlermeldung:
Zitat
C:\DOKUME~1\Familie\LOKALE~1\Temp\ccRwH4rZ.s: Assembler messages:
C:\DOKUME~1\Familie\LOKALE~1\Temp\ccRwH4rZ.s:21: Error: junk `00h' after express
ion
Parameter für gcc
gcc -masm=intel -m32 -ffreestanding -o C:\IUse\tmp\main.o -c main.c -Werror -nostdinc
Wir entwickeln jetzt unter Windoof, unter Linux kommt aber der selbe Fehler..........
Hier unser Code....
Code: [Auswählen]
int main(){
//Die folgende Funktion switcht in den RM
asm("cli\n\t"
"mov eax,cr0\n\t"
"and al,not 1\n\t"
"mov cr0,eax\n\t"
"sti\n\t");
//Initialisiere VESA
asm("push ax\n\t"
"push bx\n\t"
"mov ax, 4f00h\n\t" <-------- Die Anweisung macht nen Error :(
"mov bx, 0x7e0\n\t"
"mov es, bx\n\t"
"mov di, 0x0\n\t"
"int 0x10\n\t"
"cmp ax, 0x004f\n\t"
"jne .1\n\t"
"mov bx, 0x7e0\n\t"
"mov es, bx\n\t"
"mov di, 0x0\n\t"
"mov ax, [es:di+4]\n\t"
"mov ax, 0x4f01\n\t"
"mov di, 0x0\n\t"
"mov bx, 0x800\n\t"
"mov es, bx\n\t"
"mov cx, 0x0115\n\t"
"int 0x10\n\t"
"mov ax, 0x4f02\n\t"
"mov bx, 0x4115\n\t"
"int 0x10\n\t"
"cmp ax, 0x004f\n\t"
"je .3\n\t"
".1:\n\t"
".2:\n\t"
"jmp .2\n\t"
".3:\n\t"
"pop bx\n\t"
"pop ax\n\t"
"ret\n\t");
// ".1:\n\t" Dannach kommt eigtl eine Instruktion was er machen soll, wenns schiefgeht ...
}