Синтаксис Intel [eax + ebx], что эквивалентно синтаксису AT & T? - PullRequest
0 голосов
/ 04 марта 2012

вопрос на стрлен в сборке В сборке речь идет о strlen, но, похоже, это написано в синтаксисе AT & T, который, к сожалению, не поддерживается моим ассемблером.

Мне просто интересно, как бы вы перевели синтаксис [eax + ebx] в синтаксис Intel?

So

4(%eax)     # offset 4

эквивалентно

[eax + 4]

Предположим, значение смещения хранится в% ebx. Что эквивалентно

[eax + ebx]

%ebx(%eax)     # doesn't work!

Спасибо

1 Ответ

8 голосов
/ 04 марта 2012

[eax+ebx] следует преобразовать в (%eax,%ebx).

Полный синтаксис для адресов памяти в синтаксисе AT & T:

offset(%reg1,%reg2,scale)

, что эквивалентно:

[reg1 + reg2*scale + offset]

offset и scale являются постоянными значениями, а scale должно быть 1, 2, 4 или 8. По умолчанию 0 для смещения и 1 для масштаба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...