Старые 32-разрядные регистры были расширены до 64 бит, то r
регистров (rax
, rbx
, rsp
и так далее).
Кроме того, есть некоторые дополнительные регистры общего назначения r8
через r15
, которые также могут быть доступны, как (например) r8d
, r8w
и r8b
(нижний 32-битный двойного слова, 16-битное слово, и 8-битовый байт соответственно).
Старший байт старых 16-битных регистров, по-прежнему доступны, при многих обстоятельствах, как ah
, bh
, и так далее, но это, кажется, не быть в случае с r8
через r15
регистров. Есть несколько новых кодировок команд ,, особенно те, которые используют префикс REX
, который не может получить доступ к этим высоким байтам, но другие по-прежнему могут их использовать.
Кроме того, есть несколько новых регистров SSE, xmm8
, хотя xmm15
.
Регистры eip
и flags
также были распространены на rip
и rflags
.
Для получения более подробной информации см. wikipedia page и MSDN.
Независимо от того, поддерживаются ли они в ключевое слово asm
для конкретного компилятора C, я не мог сказать. Что немного сборки я (и это становится примерно один день в год) делается в сборке, а не С.
Ребята Как я могу сказать, что регистры коррелируют с параметрами при выполнении системного вызова. Я читал и документировал и не нашел ясного ответа. – Recursion
Обратите внимание, что старые верхние 8-битные регистры (ah, bh и т. Д.) Больше не работают для всех кодов операций. например 'inc ah' недопустим в x64, потому что этот код операции был повторно использован для одного из новых 64-битных регистров. – Johan
@Johan: также обратите внимание, что с префиксом REX регистровые коды для ah bh ch dh становятся новыми байтовыми регистрами sil dil bpl spl –