2009-10-05 1 views
3

Некоторые старые инструкции x86 не определены в 64-битном режиме. Например, LDS, LES и LSS или короткие коды кодов INC r16 (40 + rw) и INC r32 (40 + rd).Есть ли какие-либо инструкции в сборке x86, которые существуют только в 64-битном режиме?

Есть ли инструкции, которые определены только в 64-битном режиме, а не в 32-битном защищенном режиме?

Редактировать: Контекст - это разработка процессора x86. Я хочу убедиться, что я совместим со спецификацией.

+1

Я думаю, вы получите более качественные ответы, если вы немного уточните, почему вы спрашиваете об этом. В чем проблема, которую вы хотите решить? – sharptooth

+0

Это часть исследования, которое я делаю, чтобы сравнить два –

+0

. Intel учитывает 'inc r64' и' inc r32' как разные инструкции. Вы считаете их разными? –

ответ

5

Существует режим адресации, который не имеет аналогов в 32 бит: относительная адресация указателя инструкций. В 32-битном режиме это доступно только для ветвей (ака смещения ветви), в режиме 64 бит вы можете создавать эффективные адреса для любого операнда памяти относительно (r) ip.

Итак, инструкция

mov rbx,$100[rip] 

существует в x86-64, а

mov ebx,$100[eip] 

не в x86.

3

Отложите старые инструкции, которые теперь работают на 64-битных регистрах (они действительно новые инструкции, поскольку они используют отдельное двоичное представление), я могу представить как минимум две инструкции, которые являются 64 -битовый: syscall и sysret инструкция.

+1

64-разрядные регистры задаются с помощью REX.W, который является байтом, начинающимся с 0x4, и который отображается в 'INC' в 32-битном режиме, поэтому они на самом деле не являются новые инструкции. –

+0

Nathan: 64-разрядные регистры указаны с REX.W ..., что делает их отличным двоичным значением и делает их новыми инструкциями, по крайней мере, до того, как идет маркетинг Intel. –

-1

Противоположное гораздо проще придумать;) как cmpxchg8b .... вы никогда не будете использовать его в 64-битном режиме.

-1

PUSHA существует только в 32-битном режиме. Он оленья кожа существовать в 64-битном режиме

3

От Руководство компании Intel Архитектуры программного обеспечения разработчика, Том 2C Приложение А (Опкод Карта):

Таблица A-1. Суперподлинники Использовано в Opcode таблицах

...

o64 Инструкция доступна только тогда, когда в 64-битном режиме

...

Поиск таблицы, следующие инструкции появляются с этим superscript:

  1. REX префиксы (не совсем инструкция, но все же)
  2. MOVSXD
  3. SYSCALL, SYSRET
  4. SWAPGS

Несколько дополнительных инструкций, которые являются вариантами существующих, перечислены в разделе 5.16 (ИНСТРУКЦИЯ 64-битном режиме):

  1. CDQE Преобразование двойного слова в квадраслово
  2. CMPSQ Сравнить строковые операнды
  3. CMPXCHG16B Сравнить RDX: RAX с M128
  4. LODSQ нагрузки QWORD по адресу (R), СИ в RAX
  5. MOVSQ Перемещение QWORD из адресной (R) SI в (R) ДИ
  6. MOVZX (64-бит) перемещаются к квадраслово двойного слова, с нулевым расширением
  7. STOSQ магазин Rax по адресу RD I
Смежные вопросы