übersicht der register (doku)?



  • hat eventuell jemand eine kompackte/komplette übersicht über möglichst alle register (x86) die es bis zur aktuellen architektur gibt???

    ich meine nach dem 386 sind wir ja nicht stehen geblieben.
    ich dachte bis gestern auch nicht, das es eax(...) gibt 😮 , denn die allgemeinen dokus sind imer von 8086 ausgegangen und da gibbet es nunmal keine 32bit regs 😃 (bin neuling, versuche diesen status aber so schnell wie möglich abzustoßen!!!)

    und jetzt suche ich eine allgemeine übersicht (eventuell mit kurzer erklärung und enentuell nach cpu sortiert) über die regs, ohne das ich jetzt zig tausende datenblätter der einzelnen cpu`s durchforsten muß.

    danke im voraus
    mfg KoF



  • http://www.sandpile.org/

    Hier gibts eine kleine Übersicht, die ausführliche mit Funktionsbeschreibung natürlich ind er Intel Architekturdoku (Link siehe FAQ)



  • danke, genau soetwas habe ich gesucht *freufreu*

    mfg KoF



  • kennt vieleicht jemand ein tool, welches unter windoof die cpu register und ihre inhalte ausgibt???



  • Das waere nicht sehr sinnvoll, da jeder Task seinen eigenen Registersatz hat.



  • Hi!

    Du kannst dir aber die Registerwerte, Flags und anderes mit dem Debugger DEBUG ansehen. Ist eigentlich eher nützlich zur Fehlersuche.

    Code-Hacker



  • Code-Hacker schrieb:

    Du kannst dir aber die Registerwerte, Flags und anderes mit dem Debugger DEBUG ansehen. Ist eigentlich eher nützlich zur Fehlersuche.

    Debug kümmert sich aber nur um die aktuellen Register der gerade geöffneten DOS-Umgebung, i.A. nicht wirklich wertvoll. Zum Programmdebuggen nimmt man dann schon eher einen vernünftigen 32-Bit-Debugger, der z.B. in Visual Studio drin ist kann das, man kann auch Ollydbg benutzen.



  • ok, ich habe es jetzt anders gelöst. ich habe eine routine, die mir die register in meinen programmen ausgibt.

    aber wie kann ich ein komplettes register in einer variable speichern???

    z.b. möchte ich die regs eax,ebx,ecx,edx in einer variable speichern.

    dazu habe ich mir variablen wie z.b. diese angelegt:
    ->regeax db ?

    und die wollte ich so füllen:
    ->mov dword regeax, eax

    mit dem ergebnis, das nix geht 😞

    nasm mag weder das ? (symbol '?' undefined) noch meine mov's (invalid combination of opcode and opperands)



  • Hi!

    Die E..-Register sind 32-Bit groß. Ist eine Variable die mit DB deklariert wurde 1 Byte (8-Bit) groß. Du brauchst also eine größere Variable, in diesem Fall eine Double Word (DD) Variable:

    regeax dd ? ; dd statt db
    

    Das mit dem ? ist eigentlich verwunderlich. Hast du mal versucht obs funktioniert wenn du einfach mal eine Klammer rum machst?

    Code-Hacker



  • Hi.

    NASM kennt hier in der Tat kein "?".
    Stattdessen wird das Schluesselwort "res[x]" verwendet - als zB. "myvar : resb 1" oder "regeax : resd 1".
    Ferner gehoeren um Speicherzugriffe eckige Klammern gesetzt.
    MASM hat diese Krankheit, dass es auch Variablenzugriffe zulaesst, ohne dass irgendwo eine Klammer zu sehen ist - das ist beim NASM gluecklicherweise nicht der Fall.
    Also zB. "mov dword [regeax], eax".

    PS: Die NASM-Doku lesen hilft auch. 😉


  • Mod

    darüber kann man auch diskutieren, ob das nun eine krankheit ist - schließlich braucht man ja zunächst mal nur einen bezeichner für die variable, und nicht ihre adresse; folglich ist es nur logisch, dass man in diesem falle auch die klammern weglassen kann; letzlich kommt es drauf an, wofür der bezeichner steht


Log in to reply