problem mit Linker

hallo,
ich hab ein problem mit dem Linker ld von MingW
Ich habe vor einer Woche dieses Tutorial gefunden: http://www.jay-code.de/scripts/htmlgenerator.php?page=ckernel&directory=tutorials

Es geht um eine art betriebsystem-kernel in C...
das kompilieren mit GCC hat wunderbar geklappt... das Assemblieren mit NASM auch... nur wenn ich jetzt die beiden dateien linken will, bekomme ich immer den fehler: undefinied reference to '___main'

um den zu umgehen, habe ich die datei kernel.c etwas verändert:
Code:
int main()
{
    char *Text = "Welcome to Protected Mode";
    char *VideoMem = (char*)0xB8000;

    while(*Text)
    {
        *VideoMem = *Text;
        *VideoMem++;
        *VideoMem = 7;
        *VideoMem++;
        *Text++;
    }

    return(0);
}

int __main()
{
	main();
}

Dann tritt der fehler nicht mehr auf...

die Assembler-datei habe ich unverändert gelassen...
Code:
 [Bits 32]		
	extern	_main	
	global	start


start:
	call	_main	

stop:
	jmp	stop

da ld irgendwie dass Format aout nicht mag, hab ich ne weile alles Ausprobiert, kletztendlich hat dann win32 geklappt...
Wenn ich jetzt die Beiden Kompilierten Dateien linken will, Kommt kein Fehler mehr zu Stande...
dann noch wie im tut beschrieben den Asm code, der in den protected-Mode schalten soll, dranghängt, und in Sector 2 einer Diskette kopiert + selbstgeschriebenen Bootloader in demn MBR, der den Sektor 2 ausliesst...
wenn ich jetzt aber in VMWare von diskette Boote, passiert entweder garnichts, oder es erscheint ein ganz Kurz ein Text (ich konnte nurirgendwas mit Phoenix ltd erkennen), und der PC Rebootet sofort... und dass geht die Ganze zeit so weiter...

Zuerts htte ich den Booloader im verdacht, nach verwndung eines anderen hat sich dieser Verdacht aber zerstreut...
jetzt weiss ich aber nicht, obs an dem Code liegt, der in den Protected-Mode schalten soll, oder an der Gelinkten datei...

hat da vll. Jemand ne ahnung, woran dass liegen kann?
 
Versuche es mit der ganz normalen Fehlersuch-Strategie:

Laß erstmal die wirklich KOMPLEXEN Sachen raus, solange die einfachen noch nicht als sicher funktionierend nachgewiesen sind!

Soll heißen: Wenn Du noch nicht mal weißt, ob das Linken eines Programms funktioniert, solltest Du DAS klären. Mit einem GANZ EINFACHEN Testprogramm in dem ganz stupide vor sich hin laufenden System, in dem Du compilieren läßt!

Danach würde ich erstmal klären, ob Deine Methode des Ansprechens des Videospeichers im virtuellen System so geht. Noch OHNE Umschalten in den protected Mode, so daß Du ERSTMAL zumindest mit Sicherheit einfache Nachrichten auf die Konsole bekommst.

Erst DANN würde ich mich mit weitergehenden Sachen beschäftigen.
 
das mit der einfachen Nachricht habe ich schon gemacht... Per interrupt 10h Buchstaben ausgegeben...
Ich würde mich auch nicht an sowas ranwagen, wenn ich da vorher nicht schon mit experimentiert hätte^^

===EDIT===
OK, ich habs gefunden ;D
Ich war zu dappisch die Beiden korrekt miteinander zu verlinken...
So ganz Haut dass mit dem Bildschirm noch nicht hin, wird aber Hoffentlich noch^^
 
Zurück
Oben