我必须遍历堆栈以临时将单词的值移动到寄存器,如下所示:
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
但很明显,上述两种方法都没有,所以我应该如何更改才能使其正常工作?
答案 0 :(得分:0)
movl -24(%rsp,%rcx,8),%esi
请阅读AT& T语法文档(并附上)。
个人偏见:虽然通常我不介意替代方案,但是在x86汇编的情况下我认为应该烧掉MASM怪癖模式,并且AT& T只能由编译器用作进一步编译的机器格式/等,但不是人类。如果你坚持使用AT& T,请继续,但我会认为你是一个受虐狂。
比较一下,英特尔语法(nasm):
mov esi,[rsp+rcx*8-24]