[x64 ASM] MOVBE führt immer zu Exceptions



  • Hallo,
    zuvor habe ich, wenn ich mit Werten im Big Endian arbeiten möchte diese immer geladen und selber zu Little Endian konvertiert. Heute bin ich auf die MOVBE Instruktion gestoßen, die einen Wert lädt, die Bytereihenfolge vertauscht und dann wieder ablegt (mem -> reg oder reg -> mem).
    Nur möchte das bei mir nicht funktionieren.
    Zum Testen habe ich folgenden Code geschrieben:

    .code
    MySegment segment read write execute
    a dq 0123456789abcdefh
    
    assembly proc
    
    movbe rax, a    ;rax sollte nun 0xefcdab8967543201 beinhalten
    ret
    
    assembly endp
    MySegment ends
    end
    

    Hat jemand ne Idee?
    Danke


  • |  Mod

    Hast du geprüft, ob dein Prozessor diese Instruktion überhaupt unterstützt (CPUID.01H:ECX.MOVBE[bit 22] gesetzt) ?



  • camper schrieb:

    Hast du geprüft, ob dein Prozessor diese Instruktion überhaupt unterstützt (CPUID.01H:ECX.MOVBE[bit 22] gesetzt) ?

    Nicht unterstüztzt (i3-2100). Danke