EAX ... AX



  • In 32Bit-Anwendungen werden meist nur 32Bit Register verwendet, da 1. zum Addressieren eh 32Bit Register benoetigt werden und 2. OpCodes mit 16Bit-Register ein Code Prefix benoetigen (66h oder 67h)
    Bei 16Bit-Anwendungen ist das genau andersrum: OpCodes mit 32Bit-Registern brauchen dieses Prefix.
    Es gibt aber eigentlich auch genug Grenzfaelle, in denen 16Bit und 32Bit Register benutzt werden. Ich habe das aber bisher nur bei Windows-Programmen, die mit Assembler geschrieben wurden, oder DOS-Programmen gesehen 😕

    Warum es keine Moeglichkeit gibt, den high Bereich von eax direkt anzusprechen habe ich mich auch schon oft genug gefragt. Kann man wohl nichts machen :o 😉



  • Also soweit ich mich erinnere gibt es da etliche 32-bit Programme, die auch die 16-bit Register und auch die darin enthaltenen 8-bit Register verwenden. Man schaue sich doch mal ein normales Programm im Disassembler an. 😉

    Warum man den höherwertigen Teil von EAX nicht direkt ändern kann? Nun, anfangs habe ich mich das auch gefragt. Aber während längerer Programmierpraxis habe ich dann festgestellt, dass ich eigentlich so gut wie nie den höherwertigen Teil eines 32-bit Registers direkt manipulieren wollte.



  • Naja, danke für eure Antworten. Eigentlich kann ich dem letzten Satz von malfunction ja auch nur beipflichten, denn die Frage war eher theoretisch gemeint!

    greetz, phreaking



  • das ist ja aber auch nich sooo schwer

    rol eax,16
    mov ax,bla
    rol eax,16



  • Das es nicht Unmöglich ist, die Zuweisung über einen "Umweg" durchzuführen, war mir sowieso klar (es ginge auch über ein shiften und eine bitweise Oder-Verknüpfung). Die Frage war ja auch nur, warum es keinen direkten Wege gibt!
    Aber trotzdem Danke!

    greetz, phreaking



  • Hmm leider habt ihr ein Register vergessen:

    😃

    0......63
    \_RAX__/

    [ Dieser Beitrag wurde am 25.08.2002 um 13:53 Uhr von Necromancer editiert. ]



  • hmm... Gilt nicht :p
    RAX ist kein x86-Intel-Standard.
    Sonst koennte ich ja hier auch noch mit Registern vom 65c816 anruecken 😉



  • Original erstellt von Nobuo T:
    **RAX ist kein x86-Intel-Standard.
    **

    Ich mag mich irren, aber ist das nicht ein ganz normales IA-64-Register? Dann ists von Intel, von IA-32 hast du ja nichts gesagt 😉



  • Hast recht, das ist ein IA-64-Register.
    und ich habe nichts von einer 32Bit-Begrenzung gesagt 😉
    auch nicht, dass dieser Standard nicht von Intel waere... Aber gehoeren die entsprechenden Prozzies noch zur x86(Pentium)-Serie 😕

    Was solls: es ging hier urspruenglich mal um eax und ax. => 32Bit
    Ausserdem: wer benutzt heute schon solche 64Bitter privat? :p



  • Original erstellt von Nobuo T:
    Hast recht, das ist ein IA-64-Register.

    Ist ein x86-64 Register (AMD Opteron/Clawhammer).

    Was solls: es ging hier urspruenglich mal um eax und ax. => 32Bit
    Ausserdem: wer benutzt heute schon solche 64Bitter privat? :p

    Ende dieses Jahres soll der Clawhammer kommen und es gibt immer private Leute , die sich sowas leisten.

    [ Dieser Beitrag wurde am 26.08.2002 um 11:46 Uhr von Necromancer editiert. ]


Anmelden zum Antworten