Раздел 3.7.5 (Задание смещения) одного и тот же документ гласит:
Смещение части может быть указано непосредственно в качестве статического значения (так называемого смещением) адрес памяти или через адрес вычисление из одного или нескольких из следующих компонентов:
- Водоизмещение - 8-, 16- или 32-битное значение.
- База - значение в регистре общего назначения.
- Индекс - Значение в регистре общего назначения.
- Масштабный коэффициент - значение 2, 4 или 8, умноженное на значение индекса.
Смещение, возникающее в результате добавления этих компонентов, называется эффективным адресом . Каждый из этих компонентов может иметь либо положительное значение , либо отрицательное (2s дополнение) значение, за исключением коэффициента масштабирования .
EffectiveAddress вычисляет эффективный адрес с помощью:
Base + (Index*Scale) + Displacement
См [Режимы адресации x 86] также (http://stackoverflow.com/questions/34058101/referencing-the-contents-of -a-памяти местоположение-x86-адресации-режимы/34058400 # 34058400). Это все подмножества «base + index * scale + disp», за исключением RIP-относительной адресации в режиме 64 бит. –