我正在尝试用IA 32的程序集代码读取命令行参数。我在这里找到了一个解释。我可以使用堆栈指针来获取参数的数量,但无法获取参数的值。
我想做的是:

movl 8(%esp), %edx  # Move pointer to argument 1 to edx
movl (%edx), %ebx   # Move value of edx to ebx
movl $1, %eax       # opcode for exit system call in eax
int $0x80           # return

我得到正确的指针了吗?如果是的话,我怎样才能得到它的价值呢?如果不是,我如何得到正确的指针?

最佳答案

movl (%edx), %ebx # Move value of edx to ebx
这不会将EDX的值移动到EBX(注释不正确)。
EDX中取消引用指针,并将取消引用的结果放入EBX中。因此,如果您使用./a.out foo调用程序,那么EBX最终将成为0x006f6f66 (== '\0oof' ("foo\0" in little-endian))
我猜那不是你想要的,但是你的问题不是很清楚你希望在哪里发生什么。

10-02 00:53
查看更多