Когда я прочитал какой-то код разборки, поскольку я не включен в AT & T синтаксис, я не знаю, что означает некоторый код (% esp, 1).о синтаксисе сборки AT & T (% esp, 1)
11 printf("%x", a);
0x401386 <main+182>: movl $0x1,0x4(%esp,1)
0x40138e <main+190>: movl $0x40300d,(%esp,1)
0x401395 <main+197>: call 0x401810 <printf>
Может кто-нибудь сказать, что это значит? Спасибо!
'0x4 (% особ, 1)' такое же как '[ESP * 1 + 0x4]' в Intel синтаксис. –
Но ... похоже, что [esp + 0x4 * 1] чаще встречается? - Извините за моего бедного английского. 0x4 (% esp, 2) не имеет практического значения? – runningair
В общем, что-то вроде '[esp + eax * 4 + 16]' (в котором 'eax' является индексом 32-разрядного целочисленного массива, расположенного в' esp + 16'). Вот почему в режиме адресации существует «масштаб». –