x86汇编gcc调用约定esp寄存器

时间:2014-07-18 16:05:06

标签: assembly x86 att

文档说当调用汇编方法时,第一个参数应该在4(%esp)。 如果是8(%esp)的第二个参数呢?

我真的没有得到&nt汇编语法的gnus所以这个代码在intel语法中是什么?

4(%esp)

例如[esp + 4]还是[esp * 4]

2 个答案:

答案 0 :(得分:6)

4(%esp)相当于[esp + 4],所以假设你的第一个参数是4个字节,那么你的第二个参数应该是8(%esp)

答案 1 :(得分:1)

取决于第一个参数的类型 - 不同的数据类型需要不同的空间量。如果传递的参数超过4个字节,则无法将其压缩到下一个参数超出第一个参数的4个字节大小的空间中。