我正在尝试使用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
我得到了正确的指针吗?如果是这样,我如何获得它的价值?如果没有,我如何获得正确的指针?
答案 0 :(得分:2)
movl (%edx), %ebx # Move value of edx to ebx
这不会将EDX
的值移至EBX
(评论不正确)。
EDX
中的取消引用指针,并将取消引用的结果放入EBX
。因此,如果您使用./a.out foo
调用了自己的计划,那么EBX
将最终成为0x006f6f66 (== '\0oof' ("foo\0" in little-endian))
。
我猜这不是你想要的,但你的问题并不是很清楚你期望在哪里发生。