我正在学习asm,这是我的(很多)问题之一:我想改变一些数组索引的值.让我们说:
我试过movl %eax, (-4(%ebp),0(%esp),4)但是没用.更糟糕的是,它会抛出语法错误:bobi.s:15:错误:垃圾邮件`(%ebp),0(%esp),4)'表达式后
什么是正确的语法?
在x86程序集中没有单一指令可以执行此操作.你必须找到一个可用的寄存器,用它来存储你得到的数组的地址-4(%ebp),找到另一个寄存器来保存索引0(%esp),然后才能访问你感兴趣的单元(在更多的RISC中)类似的程序集,你仍然需要在进行内存访问之前将这两个寄存器加在一起).
假设寄存器可用,例如:
movl -4(%ebp), %ebx
movl 0(%esp), %ecx
movl %eax, 0(%ebx,%ecx,4)
Run Code Online (Sandbox Code Playgroud)
应该管用.