Ассемблер в Linux для программистов C: различия между версиями

Содержимое удалено Содержимое добавлено
Добавил книгу по Intel64
Строка 369:
* <code>4(%ecx)</code> адрес операнда равен <code>%ecx</code> + 4. Удобно адресовать отдельные поля структур. Например, в <code>%ecx</code> адрес некоторой структуры, второй элемент которой находится «на расстоянии» 4 байта от её начала (говорят «по смещению 4 байта»);
* <code>-4(%ecx)</code> адрес операнда равен <code>%ecx</code> − 4;
* <code>foo(,%ecx,4)</code> адрес операнда равен <code>foo</code> + <code>%ecx</code> × 4, где <code>foo</code> — некоторый адрес. Удобно обращаться к элементам массива. Если <code>foo</code> — указатель на массив, элементы которого имеют размер 4 байта, то мы можем заносить в <code>%ecx</code> номер элемента и таким образом обращаться к самому элементу.
 
Ещё один важный нюанс: команды нужно помещать в секцию кода. Для этого перед командами нужно указать директиву <code>.text</code>. Вот так: