Die alten 32-Bit-Register sind auf 64 Bits erweitert worden, die r
Register (rax
, rbx
, rsp
und so weiter).
Darüber hinaus gibt es einige zusätzlichen Universalregister r8
durch r15
die auch als (zum Beispiel) zugegriffen werden kann r8d
, r8w
und r8b
(das untere 32-Bit-Doppelwort, 16-Bit-Wort, und 8-Bit-Byte beziehungsweise).
Der High-Byte der alten 16-Bit-Register ist nach wie vor zugänglich, unter vielen Umständen, wie ah
, bh
, und so weiter, aber dies scheint nicht für die r8
durch r15
Register der Fall zu sein. Es gibt einige neue Befehlskodierungen, speziell diejenigen mit dem REX
Präfix, die nicht auf diese hohen Bytes zugreifen können, aber andere sind immer noch frei, sie zu verwenden.
Zusätzlich gibt es einige neue SSE-Register, xmm8
obwohl xmm15
. Die Register eip
und flags
wurden ebenfalls auf und rflags
erweitert. Weitere Informationen finden Sie in den Artikeln wikipedia page und MSDN.
Ob diese im asm
Schlüsselwort für einen bestimmten C-Compiler unterstützt werden, konnte ich nicht sagen. Welche kleine Montag mich (und es einen Tag zu einem Jahr) in der Montage durchgeführt wird, statt C.
Jungs Wie kann ich sagen, was Register Parameter korreliert, wenn ein Systemaufruf zu tun. Ich habe gelesen und Dokumentation und habe keine klare Antwort gefunden. – Recursion
Beachten Sie, dass die alten oberen 8 Bit-Register (ah, bh usw.) nicht mehr für alle Opcodes funktionieren. z.B. 'inc ah' ist in x64 nicht gültig, weil dieser Opcode für eines der neuen 64bit-Register wiederverwendet wurde. – Johan
@Johan: Beachten Sie auch, dass mit dem Präfix REX die Register-Codes für ah bh ch dh die neuen Byte-Register wird sil dil bpl spl –