"jmp $" ?



  • Hallo,

    was bedeutet die Codezeile

    jmp $
    

    Sie steht auf der ersten Seite des OS-Tutorials auf henkessoft.de in dem Abschnitt, in dem das erste mal der C-Kernel verwendet wird. Die Codezeile steht da am Ende des ASM-Kernels.

    Jumpt der dann evtl. immer wieder an seine eigene Adresse? Das es also eine Endlosschleife ergibt?

    Mit freundlichen Grüßen
    DerRatlose



  • Ich bin zwar kein ASM-Freak, aber ehenkes meinte mal, als ich danach fragte (im IRC), das es eine Endlosschleife ergibt.

    Es wirkt sozusagen als "Hosenträger" (Zitat ehenkes). Wenn was schiefläuft -> Endlosschleife.

    EDIT: Die Frage wär übrigens am besten im Assembler-Subforum angebracht 😉



  • Danke für die Bestätiegung 🙂

    Hatte mal eine ähnliche Frage gestellt, dir wurde inzwischen auch nach hier verschoben... Also, warum nicht hier? Hat doch was mit dem Tutorial zu tun 😉



  • Mr X schrieb:

    Wenn was schiefläuft -> Endlosschleife.

    Eine stromfressende Endlosschleife! 😉

    infinite_loop:
        hlt
        jmp infinite_loop
    

    🤡



  • Ja, da hast du Recht.
    Wenn man das OS in VirtualBox ausführt und in die jmp $ kommt, wird die CPU-Auslastung doch ziemlich hochgejagt 😃
    Bei deiner Methode mit dem hlt bleibt sie hingegen schön unten und wird kaum beansprucht 🙂


  • Mod

    da sollten wir in so umweltbewussten zeiten wohl nachbessern. 😉



  • Man kann es auch einfach weglassen: Wenn was schiefgelaufen ist, das den ganzen Kernel zum Absturz bringt, dann ists wohl egal, was wir danach machen, denn das Interessiert dann wohl kaum, da das OS abgeschossen ist und ein Reboot unumgänglich ist.

    EDIT: Ohne zu wissen, wo genau diese Stelle nun zu finden ist, geh ich einfach mal von der "Hosenträger"-Funktionalität aus



  • Ob man es weglassen kann oder nicht hängt immer von der Situation ab. Ich nutze es momentan um eine Endloschleife zu erzeugen, damit nicht plötzlich versucht wird meine Daten also Code zu interpretieren....



  • und wenn ma schon ganz genau san, dann sollten interrupts vorher deaktiviert werden...

    cli
    .1:
        hlt
        jmp .1
    


  • das hatte ich mal weggelassen, war ja schon im protected mode 😉



  • Mr X schrieb:

    Man kann es auch einfach weglassen: Wenn was schiefgelaufen ist, das den ganzen Kernel zum Absturz bringt, dann ists wohl egal, was wir danach machen, denn das Interessiert dann wohl kaum, da das OS abgeschossen ist und ein Reboot unumgänglich ist. ...

    Genau, man hat ja sonst keine Verantwortung auf der Kernel-Ebene, im Ring 0 😮 😃


Anmelden zum Antworten