我正在尝试使用 IA 32 的汇编代码读取命令行参数。我在这里找到了如何执行此操作的解释 http://www.paladingrp.com/ia32.shtml .我可以使用堆栈指针来获取参数的数量,但无法获取参数的值。 这是我正在尝试做的事情:
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
我得到的指针是否正确?如果是这样,我如何获得它的值(value)?如果不是,我如何获得正确的指针?
最佳答案
movl (%edx), %ebx # Move value of edx to ebx
这不会将 EDX
的值移动到 EBX
(注释不正确)。
解引用 EDX
中的指针,并将解引用的结果放入EBX
。因此,如果您使用 ./a.out foo
调用您的程序,则 EBX
最终将成为 0x006f6f66 (== '\0oof' ("foo\0 “在小端))
。
我猜这不是您想要的,但您的问题并不清楚您希望在哪里发生什么。
关于linux - IA 32 读取命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8328025/