Seite 2 von 4 ErsteErste 1234 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
45
ZUGRIFFE
3498
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #16
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    VirtualBox; Bochs startet einfach gleich neu.
     

  2. #17
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Nimm Bochs

    Und zwar aus einem Grund: An Bochs kann man GDB dran hängen und damit debuggen. Außerdem kann man Bochs so konfigurieren, das er nicht neu startet - wenn ich mich richtig erinnere (ist schon ne Weile her, dass ich mich mit dem Thema beschäftigt habe).

    Läuft der Kernel denn, wenn du die Initialisierung der GDT - also den Funktionsaufruf - wieder raus nimmst? Wenn ja, dann zeig mal den kompletten Code für die GDT. Da bauen Neulinge (auch wie ich damals) gern Fehler ein - ist ein bisschen tricky das Thema.
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #18
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Klar, mach ich natürlich, aber daran kann es doch im Prinzip nicht liegen, weil alles perfekt funktioniert, wenn ich die Strukturen, Variablen und Funktionen alle in der main.c habe und die anderen Dateien weglasse, oder?
    EDIT:
    Weiß jemand, wie automatisches Neustarten verhindert wird? Google hilft mir leider nicht. *beleidigt*
    EDIT2:
    Ich hab's grad mit echter Hardware versucht (meinem PC) und dort ist es das selbe wie in der VBox.
    Geändert von üäpöol (05.05.12 um 20:38 Uhr)
     

  4. #19
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Versuch mal das: Öffne die bochsrc-Datei und such nach der Zeile, die mit cpu anfängt. In der stehen Parameter, die durch Komma getrennt sind. Füge dort einen zusätzlichen Parameter reset_on_triple_fault=0 hinzu.

    Ansonsten wäre noch zu erwähnen, das Bochs loggen kann. Das solltest du verwenden. Hier ist das Manual zur bochsrc: http://bochs.sourceforge.net/doc/doc...r/bochsrc.html

    Und: Solange du keinen Source zeigst oder sonst irgendwelche Hinweise z.B. ein Log-File kann man dir schlecht helfen.
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #20
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Ich hab's jetzt so gestartet und bekomme folgende Fehlermeldung:
    Code :
    1
    
    exception(): 3rd (13) exception with no resolution
    Aber nochmal die Frage: Kann es am normalern Code liegen?! Es funktioniert wie gesagt alles perfekt, wenn die Funktionen, Variablen und Strukturen in der main.c deklariere und definiere. Ich habe ja nur versucht, Teile der Datei auszulagern, um mehr Übersichtlichkeit zu haben. Und erst jetzt gibt es das Problem, das der Kernel "hängt". Denn imho muss es doch daran liegen, dass ich die Strukturen, Variablen und Funktionen falsch in die andere Datei ausgelagert habe, oder?
    EDIT:
    Nachdem ich auf Continue gedrückt habe, kommt noch diese Fehlermeldung:
    Code :
    1
    
    Entering to shutdown state still not implemented
    Vielleicht hilft das ja.
     

  6. #21
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Es liegt mit sehr großer Wahrscheinlichkeit am Code. Exception 13 ist ein General Protection Fault. Der tritt im Zusammenhang mit der GDT gern dann auf, wenn man die Segment-Daten falsch angegeben hat.

    Wenn du willst, kannst du dein Projekt mal anhängen, dann werde ich einen Blick darauf werfen.

    Nur weil man den Code auf mehrere Dateien auslagert, geht die Runtime nicht kaputt. Da muss schon etwas zusätzlich passiert sein.

    EDIT: Es hilft nur soweit, das ich jetzt weiß, das du nicht die neueste Version von Bochs (2.5.1) verwendest sondern die höchstens 2.4.5.

    EDIT2: Ich ziehe den Edit zurück: Die Meldung kommt bei 2.5.1 auch noch. Hab den Source grade angeschaut.

    EDTI3: Die Meldung sagt eigentlich nur aus, was auch schon die erste Meldung aussagt: Da ist ein Triple-Fault aufgetreten, weil noch keine IDT implementiert ist:

    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    //
    // The shutdown state is very similar to the state following the exection
    // if HLT instruction. In this mode the processor stops executing
    // instructions until #NMI, #SMI, #RESET or #INIT is received. If
    // shutdown occurs why in NMI interrupt handler or in SMM, a hardware
    // reset must be used to restart the processor execution.
    //
    void BX_CPU_C::shutdown(void)
    {
      BX_PANIC(("Entering to shutdown state still not implemented"));
    Geändert von saftmeister (05.05.12 um 21:56 Uhr)
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #22
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    OK, saftmeister. Ich zeige dir kaum Code von mir, nicht mal Fehlermeldungen und trotzdem hast du zu 100% Recht! Das nenne ich mal Genie!
    Es lag am Code. Ich habe eine "alte" Version des OS' wiederhergestellt, wieder dasselbe - bzw. offensichtlich nicht - wie zuvor gemacht und - es funktioniert! Ich habe alles jetzt extern. Das ist wirklich großartig. Leider funktioniert es nur in der VirtualBox und mit echter Hardware, aber komischerweiser nicht mit bochs.
    Es gibt exakt dieselben Fehlermeldungen wie zuvor. Wie komme ich denn an den log?
    Geändert von üäpöol (05.05.12 um 22:17 Uhr)
     

  8. #23
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Danke für die Blumen, aber Genie ist übertrieben - hab nur ein paar Erfahrungen mit dem Kram.

    Du kannst in der bochsrc das Logging aktivieren.

    Folgende Zeilen sind relevant (wenn noch nicht vorhanden, einfach mal einfügen):

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    log: bochsout.txt
    logprefix: %t-%e-@%i-%d
    debug: action=report
    info: action=report
    error: action=report
    panic: action=ask
    debugger_log: debugger.out

    Bei "debug:" kannst auch auf "action=ignore" stellen, wenn die Logs dadurch zu viel werden.

    Die Angaben "log:" und "debugger_log:" sind Namen der Dateien, in die geloggt werden soll. Du kannst IMHO auch vollständige Pfade verwenden.

    EDIT: Was mir grade aufgefallen ist - ich weiß nicht mehr, obs den bei 2.4.5 auch schon gegeben hat, aber seit ich 2.5.1 installiert habe, gibts bochsdbg.exe im Installationsordner. Wenn du das Image noch hast, bei dem der TF aufgetreten ist, kann man das mal versuchen zu debuggen.
    Geändert von saftmeister (05.05.12 um 22:24 Uhr)
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  9. #24
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Das andere Browserfenster versucht gerade verzweifelt, den Code abzuschicken, deshalb versuche ich, die Datei mal anzuhängen.
    Angehängte Dateien Angehängte Dateien
     

  10. #25
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Ok, lass uns mal schauen, ob wir da nicht was rauslesen können:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    00072507865-d-@0000b383-[PIC  ] IO write to 0020 = 20
    00072507873-d-@0000d0e2-[CPU0 ] interrupt(): vector = 16, TYPE = 4, EXT = 0
    00072508065-d-@0000c140-[CPU0 ] protected mode activated
    00072508144-d-@0000c187-[CPU0 ] real mode activated
    00072508157-d-@0000c862-[CPU0 ] interrupt(): vector = 15, TYPE = 4, EXT = 0
    00072508247-d-@0000c140-[CPU0 ] protected mode activated
    00072510971-d-@0010000e-[CPU0 ] BxError: Encountered an unknown instruction b1=0xff (signalling #UD)
    00072510971-d-@0010000e-[CPU0 ] modrm was 0xff, nnn was 7, rm was 7
    00072510971-i-@0010000e-[CPU0 ] 0x000000000010000c>> (invalid)  : FFFF
    00072510971-d-@0010000e-[CPU0 ] exception(0x06): error_code=0000
    00072510971-d-@0010000c-[CPU0 ] interrupt(): vector = 06, TYPE = 3, EXT = 1
    00072510971-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x06)
    00072510971-d-@0010000c-[CPU0 ] exception(0x0d): error_code=0032
    00072510971-d-@0010000c-[CPU0 ] interrupt(): vector = 0d, TYPE = 3, EXT = 1
    00072510971-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
    00072510971-d-@0010000c-[CPU0 ] exception(0x0d): error_code=006a
    00072510971-d-@0010000c-[CPU0 ] exception(0x08): error_code=0000
    00072510971-d-@0010000c-[CPU0 ] interrupt(): vector = 08, TYPE = 3, EXT = 1
    00072510971-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
    00072510971-d-@0010000c-[CPU0 ] exception(0x0d): error_code=0042
    00072510971-i-@0010000c-[CPU0 ] CPU is in protected mode (active)
    00072510971-i-@0010000c-[CPU0 ] CS.mode = 32 bit
    00072510971-i-@0010000c-[CPU0 ] SS.mode = 32 bit
    00072510971-i-@0010000c-[CPU0 ] | EAX=2badb002  EBX=0000d48c  ECX=ffffffff  EDX=0000f000
    00072510971-i-@0010000c-[CPU0 ] | ESP=00006c78  EBP=00006cdc  ESI=02102190  EDI=00102190
    00072510971-i-@0010000c-[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf CF
    00072510971-i-@0010000c-[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00072510971-i-@0010000c-[CPU0 ] |  CS:0028( 0005| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] |  DS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] |  SS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] |  ES:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] |  FS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] |  GS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072510971-i-@0010000c-[CPU0 ] | EIP=0010000c (0010000c)
    00072510971-i-@0010000c-[CPU0 ] | CR0=0x00000011 CR2=0x00000000
    00072510971-i-@0010000c-[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    00072510971-i-@0010000c-[CPU0 ] 0x000000000010000c>> (invalid)  : FFFF
    00072510971-d-@0010000c-[CTRL ] searching for component 'cpu' in list 'bochs'
    00072510971-d-@0010000c-[CTRL ] searching for component 'reset_on_triple_fault' in list 'cpu'
    00072510971-p-@0010000c-[CPU0 ] >>PANIC<< exception(): 3rd (13) exception with no resolution

    In Zeile 1 steht, das ein IO-Write an Port 20 durchgeführt wurde. Der Port 20 ist für den Interrupt-Controller zuständig. Warum da jetzt - obwohl doch erst die GDT aktiviert werden soll, bereits am PIC rum gepfriemelt wird, weiß ich nicht. Dein Code wirds dir aber mitteilen.

    In Zeile 7 ist dann das Problem erkennbar: #UD ist Invalid-Opcode-Exception, also ein Assembler-Befehl, den es nicht gibt, oder ein gültiger Assembler-Befehl mit fehlerhaften Parametern. Es sieht nach einem MOV aus, der falsche Paramter hat. Ich bin allerdings kein Experte, was Assembler angeht.

    Alle weiteren Exceptions sind Folgefehler. Bis hin zur Triple-Fault, die zum Reset der CPU führt.

    Möglicherweise hilft dir aber schon der Hinweis, das ein outb an Port 20 gemacht wird, such ab dort nach dem Fehler.
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  11. #26
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Erstmal danke für den Hinweis. Er hat mir aber insofern nicht weiter geholfen, als dass nirgends etwas mit Port 20 gemacht wird. Deshalb habe ich jetzt nur mal die kernel.o gelinkt und selbst das funktioniert nicht. Es muss wohl an der Datei oder am Linkerscript liegen. Ich poste hier mal beides:
    Code asm:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    [BITS 32]
    FLAGS    equ 0
    MAGIC    equ 0x1BADB002       ; Magicnumber - Erkennungsmerkmal für GRUB
    CHECKSUM equ -(MAGIC + FLAGS) ; Checksum
    zeilen   equ 10
     
     
    align 4
    MultiBootHeader:
        dd MAGIC       ; Magic number
        dd FLAGS       ; Flags
        dd CHECKSUM    ; Checksum
     
    [GLOBAL] start
    start:
        ; [EXTERN main]
        ; call main
        [GLOBAL kernelerror]
        kernelerror:
            cli
            hlt
    Das wird so assmembliert:
    Code :
    1
    
    building\NASM\NASM.exe -f elf32 -o kernel\kernel.o kernel\kernel.asm
    Und dann so gelinkt:
    Code :
    1
    
    "building\GCC & LD\bin\i586-elf-ld.exe" -melf_i386 -T "building\GCC & LD\bin\link.ld" -o kernel\kernel.elf kernel\kernel.o
    Linkerskript:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    ENTRY (start)
    OUTPUT_FORMAT(elf32-i386)
    OUTPUT_ARCH(i386:i386)
     
    SECTIONS
    {
      . = 0x00100000;
        kernel_start = .;
      .text :
      {
        *(.text)
      }
        
      .rodata :
      {
        *(.rodata)
      }
     
      .data : 
      {
        *(.data)
      }
     
      .bss :
      {
        _sbss = .;
        *(COMMON)
        *(.bss)
        _ebss = .;
      }
          . = ALIGN(4096);
        kernel_end = .;
    }
    Ich hoffe, das hilft weiter.
     

  12. #27
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    So, also ich bin jetzt einen Schritt weiter. Es liegt sehr wahrscheinlich an dem cli-Opcode, der aufgerufen wird. Und der Fehler tritt sehr wahrscheinlich auf, weil vorher kein sti gemacht wurde. cli stoppt die Ausführung von Interrupts, welche vorher mit sti natürlich gestartet werden müssen.

    So bin ich vorgegangen:

    - Im log zeigt der EIP (Instruction Pointer) auf 0x10000c
    - Ich mach eine Disassemblierung der kernel.elf und schau mir an, was an dieser Stelle vorkommt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    D:\Cpp\kernel\test1>i586-elf-objdump -d bin\kernel.elf
     
    bin\kernel.elf:     file format elf32-i386
     
     
    Disassembly of section .text:
     
    00100000 <MultiBootHeader>:
      100000:       02 b0 ad 1b 00 00       add    0x1bad(%eax),%dh
      100006:       00 00                   add    %al,(%eax)
      100008:       fe 4f 52                decb   0x52(%edi)
      10000b:       e4 fa                   in     $0xfa,%al
     
    0010000c <kernelerror>:
      10000c:       fa                      cli
      10000d:       f4                      hlt

    Wie du siehst ist an Stelle 10000c das cli.

    Ich weiß jetzt nicht, ob bei dir das gleiche rauskommen wird.
    üäpöol bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  13. #28
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Hm. Ich habe jetzt mal alles weggelassen, also:
    Code asm:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    [BITS 32]
    FLAGS    equ 0
    MAGIC    equ 0x1BADB002       ; Magicnumber - Erkennungsmerkmal für GRUB
    CHECKSUM equ -(MAGIC + FLAGS) ; Checksum
    zeilen   equ 10
     
     
    align 4
    MultiBootHeader:
        dd MAGIC       ; Magic number
        dd FLAGS       ; Flags
        dd CHECKSUM    ; Checksum
     
    [GLOBAL] start
    start:
        ; [EXTERN main]
        ; call main
        ; [GLOBAL kernelerror]
        ; kernelerror:
            ; cli
            ; hlt
    Das ist alles, was von mir kommt, der Rest ist alles GRUB(4DOS). Ich bekomme trotzdem die selbe Fehlermeldung. Hier wieder der selbe Part in der bochsout.txt
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    
    00072507868-d-@0000b383-[PIC  ] IO write to 0020 = 20
    00072507876-d-@0000d0e2-[CPU0 ] interrupt(): vector = 16, TYPE = 4, EXT = 0
    00072508068-d-@0000c140-[CPU0 ] protected mode activated
    00072508147-d-@0000c187-[CPU0 ] real mode activated
    00072508160-d-@0000c862-[CPU0 ] interrupt(): vector = 15, TYPE = 4, EXT = 0
    00072508250-d-@0000c140-[CPU0 ] protected mode activated
    00072509900-d-@0010000e-[CPU0 ] BxError: Encountered an unknown instruction b1=0xff (signalling #UD)
    00072509900-d-@0010000e-[CPU0 ] modrm was 0xff, nnn was 7, rm was 7
    00072509900-i-@0010000e-[CPU0 ] 0x000000000010000c>> (invalid)  : FFFF
    00072509900-d-@0010000e-[CPU0 ] exception(0x06): error_code=0000
    00072509900-d-@0010000c-[CPU0 ] interrupt(): vector = 06, TYPE = 3, EXT = 1
    00072509900-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x06)
    00072509900-d-@0010000c-[CPU0 ] exception(0x0d): error_code=0032
    00072509900-d-@0010000c-[CPU0 ] interrupt(): vector = 0d, TYPE = 3, EXT = 1
    00072509900-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
    00072509900-d-@0010000c-[CPU0 ] exception(0x0d): error_code=006a
    00072509900-d-@0010000c-[CPU0 ] exception(0x08): error_code=0000
    00072509900-d-@0010000c-[CPU0 ] interrupt(): vector = 08, TYPE = 3, EXT = 1
    00072509900-e-@0010000c-[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
    00072509900-d-@0010000c-[CPU0 ] exception(0x0d): error_code=0042
    00072509900-i-@0010000c-[CPU0 ] CPU is in protected mode (active)
    00072509900-i-@0010000c-[CPU0 ] CS.mode = 32 bit
    00072509900-i-@0010000c-[CPU0 ] SS.mode = 32 bit
    00072509900-i-@0010000c-[CPU0 ] | EAX=2badb002  EBX=0000d48c  ECX=ffffffff  EDX=0000f000
    00072509900-i-@0010000c-[CPU0 ] | ESP=00006c78  EBP=00006cdc  ESI=021010c8  EDI=001010c8
    00072509900-i-@0010000c-[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf CF
    00072509900-i-@0010000c-[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00072509900-i-@0010000c-[CPU0 ] |  CS:0028( 0005| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  DS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  SS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  ES:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  FS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  GS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] | EIP=0010000c (0010000c)
    00072509900-i-@0010000c-[CPU0 ] | CR0=0x00000011 CR2=0x00000000
    00072509900-i-@0010000c-[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    00072509900-i-@0010000c-[CPU0 ] 0x000000000010000c>> (invalid)  : FFFF
    00072509900-d-@0010000c-[CTRL ] searching for component 'cpu' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'reset_on_triple_fault' in list 'cpu'
    00072509900-p-@0010000c-[CPU0 ] >>PANIC<< exception(): 3rd (13) exception with no resolution
    00072509900-i-@0010000c-[CPU0 ] CPU is in protected mode (active)
    00072509900-i-@0010000c-[CPU0 ] CS.mode = 32 bit
    00072509900-i-@0010000c-[CPU0 ] SS.mode = 32 bit
    00072509900-i-@0010000c-[CPU0 ] | EAX=2badb002  EBX=0000d48c  ECX=ffffffff  EDX=0000f000
    00072509900-i-@0010000c-[CPU0 ] | ESP=00006c78  EBP=00006cdc  ESI=021010c8  EDI=001010c8
    00072509900-i-@0010000c-[CPU0 ] | IOPL=0 id vip vif ac vm RF nt of df if tf sf zf af pf CF
    00072509900-i-@0010000c-[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00072509900-i-@0010000c-[CPU0 ] |  CS:0028( 0005| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  DS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  SS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  ES:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  FS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] |  GS:0010( 0002| 0|  0) 00000000 ffffffff 1 1
    00072509900-i-@0010000c-[CPU0 ] | EIP=0010000c (0010000c)
    00072509900-i-@0010000c-[CPU0 ] | CR0=0x00000011 CR2=0x00000000
    00072509900-i-@0010000c-[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    00072509900-i-@0010000c-[CPU0 ] 0x000000000010000c>> (invalid)  : FFFF
    00072509900-d-@0010000c-[ACPI ] Exit
    00072509900-d-@0010000c-[UNMP ] Exit
    00072509900-d-@0010000c-[BIOS ] Exit
    00072509900-d-@0010000c-[SPEAK] Exit
    00072509900-d-@0010000c-[EFIRQ] Exit
    00072509900-d-@0010000c-[GAME ] Exit
    00072509900-d-@0010000c-[CTRL ] searching for component 'keyboard_mouse' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'keyboard' in list 'keyboard_mouse'
    00072509900-d-@0010000c-[CTRL ] searching for component 'paste_delay' in list 'keyboard'
    00072509900-d-@0010000c-[KBD  ] Exit
    00072509900-d-@0010000c-[HD   ] Exit
    00072509900-d-@0010000c-[PIDE ] Exit
    00072509900-d-@0010000c-[CTRL ] searching for component 'ports' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'serial' in list 'ports'
    00072509900-d-@0010000c-[CTRL ] searching for component '1' in list 'serial'
    00072509900-d-@0010000c-[CTRL ] searching for component 'enabled' in list '1'
    00072509900-d-@0010000c-[CTRL ] searching for component 'ports' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'serial' in list 'ports'
    00072509900-d-@0010000c-[CTRL ] searching for component '2' in list 'serial'
    00072509900-d-@0010000c-[CTRL ] searching for component 'enabled' in list '2'
    00072509900-d-@0010000c-[CTRL ] searching for component 'ports' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'serial' in list 'ports'
    00072509900-d-@0010000c-[CTRL ] searching for component '3' in list 'serial'
    00072509900-d-@0010000c-[CTRL ] searching for component 'enabled' in list '3'
    00072509900-d-@0010000c-[CTRL ] searching for component 'ports' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'serial' in list 'ports'
    00072509900-d-@0010000c-[CTRL ] searching for component '4' in list 'serial'
    00072509900-d-@0010000c-[CTRL ] searching for component 'enabled' in list '4'
    00072509900-d-@0010000c-[SER  ] Exit
    00072509900-d-@0010000c-[PAR  ] Exit
    00072509900-d-@0010000c-[CTRL ] searching for component 'clock_cmos' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'cmosimage' in list 'clock_cmos'
    00072509900-d-@0010000c-[CTRL ] searching for component 'enabled' in list 'cmosimage'
    00072509900-i-@0010000c-[CMOS ] Last time is 1336329300 (Sun May 06 20:35:00 2012)
    00072509900-d-@0010000c-[CMOS ] Exit
    00072509900-d-@0010000c-[DMA  ] Exit
    00072509900-d-@0010000c-[PIC  ] Exit
    00072509900-d-@0010000c-[BXVGA] Exit
    00072509900-d-@0010000c-[CTRL ] searching for component 'display' in list 'bochs'
    00072509900-d-@0010000c-[CTRL ] searching for component 'vga_update_frequency' in list 'display'
    00072509900-d-@0010000c-[BXVGA] Exit
    00072509900-d-@0010000c-[FDD  ] Exit
    00072509900-d-@0010000c-[PCI  ] i440fxConfAddr:0x80000058
    00072509900-d-@0010000c-[PCI  ] i440fxConfData:0x00001000
    00072509900-d-@0010000c-[PCI  ] i440fxArray59:0x10
    00072509900-d-@0010000c-[PCI  ] i440fxArray5a:0x00
    00072509900-d-@0010000c-[PCI  ] i440fxArray5b:0x00
    00072509900-d-@0010000c-[PCI  ] i440fxArray5c:0x00
    00072509900-d-@0010000c-[PCI  ] i440fxArray5d:0x00
    00072509900-d-@0010000c-[PCI  ] i440fxArray5e:0x00
    00072509900-d-@0010000c-[PCI  ] i440fxArray5f:0x00
    00072509900-d-@0010000c-[PCI  ] Exit
    00072509900-d-@0010000c-[P2I  ] Exit
    00072509900-i-@0010000c-[     ] restoring default signal behavior
    00072509900-i-@0010000c-[CTRL ] quit_sim called with exit code 1
    Es hat sich nichts geändert. Womit disassemblierst du denn? Ich disassembliere mit dem NASM Disassembler, bekomme aber dabei nur Adressen bis ca. 1230.
     

  14. #29
    Avatar von saftmeister
    saftmeister ist offline Nutze den Saft!
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    4.598
    Zitat Zitat von üäpöol Beitrag anzeigen
    Es hat sich nichts geändert. Womit disassemblierst du denn? Ich disassembliere mit dem NASM Disassembler, bekomme aber dabei nur Adressen bis ca. 1230.
    Steht in dem Teil wo disassembliert wird mit als Kommando drin:

    Code :
    1
    
    D:\Cpp\kernel\test1>i586-elf-objdump -d bin\kernel.elf

    Da du ja auch den crosstools Gcc-Compiler verwendest, hast du mit Sicherheit auch die i586-elf-objdump.exe.

    EDIT: NASM hilft hier nicht, weil NASM nur den Objekt-Code kennt. Nicht den eigentlichen ELF-Code, der durch den Linker erzeugt wird.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #30
    üäpöol ist offline Mitglied Gold
    Registriert seit
    Feb 2011
    Beiträge
    201
    Inzwischen glaube ich, dass es an GRUB liegt. Ich habe alles weggelassen, bis auf das, was GRUB braucht und ich bekomme dennoch den selben Fehler. Ich habe mal cli und hlt weggelassen, aber das ändert überhaupt nichts es ist trotzdem bei 10000c, wo objdump nichts mehr anzeigt.
     

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. Variable deklarieren
    Von WorldRacer im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.01.09, 18:24
  2. Variablen in Var deklarieren
    Von darkpriest im Forum Javascript & Ajax
    Antworten: 22
    Letzter Beitrag: 21.11.07, 11:49
  3. ein String deklarieren
    Von Reverent im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 03.08.06, 19:51
  4. Picture deklarieren
    Von heldny im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 07.10.05, 18:35
  5. css links deklarieren
    Von bspainkf36 im Forum CSS
    Antworten: 9
    Letzter Beitrag: 13.12.02, 13:32

Stichworte