В чем смысл MOV (% r11,% r12,1),% edx?

Что делает эта инструкция?

mov (%r11,%r12,1), %edx

Ответ 1

Посмотрите здесь. В нем говорится:

В синтаксисе AT & T память ссылаются следующим образом:

segment-override:signed-offset(base,index,scale)

Вниз на странице есть несколько примеров. Я считаю это лучшим:

GAS memory operand   NASM memory operand
------------------   -------------------
(%ecx,%ebx,2)    [ecx+ebx*2]

mov source, destination в синтаксисе AT & T копирует значение из источника в пункт назначения. Также рассмотрим размер edx. Сколько байтов (4), по вашему мнению, скопирует mov?

Ответ 2

mov (%r11,%r12,1), %edx эта команда используется для расчета адреса (режим индексированной адресации).

  • %r11 является базовым адресом
  • %r12 - это индекс
  • и 1 - мультипликатор

Он работает следующим образом:

adres = base adres + index * multipler

base adres и multipler должны быть константами (базовый адрес может быть зарегистрирован), индекс должен быть зарегистрирован.