Assembler - язык неограниченных возможностей

         

Адресация


Регистровый операнд всегда начинается с символа «%»:

// xor edx,edx xorl %eax,%eax

Непосредственный операнд всегда начинается с символа «$»:

// mov edx,offset variable movl $variable,%edx

Косвенная адресация использует немодифицированное имя переменной:

// push dword ptr variable pushl variable

Более сложные способы адресации удобнее рассматривать как варианты максимально сложного способа — по базе с индексированием, и сдвигом:

// mov eax,base_addr[ebx+edi*4] (наиболее общий случай) movl base_addr(%ebx,%edi,4),%еах // lea eax,[eax+eax*4] leal (%еах,%еах,4),%еах // mov ax,word ptr [bp-2] movw -2(%ebp),%ax // mov edx,dword ptr [edi*2] movl (,%edi,2),%edx



Содержание раздела