在AT& T x64汇编中迭代堆栈

时间:2016-10-15 16:07:46

标签: assembly att

我必须遍历堆栈以临时将单词的值移动到寄存器,如下所示:

movq    ((i - 3)*8)(%rsp), %esi

movq    %rcx, %rbx                # where %rcx is the counter
        subq    $3, %rbx         
        movq    $8, %rax
        mulq    %rbx
        movq    (%rbx)(%rsp), %esi

但很明显,上述两种方法都没有,所以我应该如何更改才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

movl -24(%rsp,%rcx,8),%esi

请阅读AT& T语法文档(并附上)。

个人偏见:虽然通常我不介意替代方案,但是在x86汇编的情况下我认为应该烧掉MASM怪癖模式,并且AT& T只能由编译器用作进一步编译的机器格式/等,但不是人类。如果你坚持使用AT& T,请继续,但我会认为你是一个受虐狂。

比较一下,英特尔语法(nasm):
mov esi,[rsp+rcx*8-24]