IA 32读取命令行参数

时间:2011-11-30 15:05:03

标签: linux assembly command-line x86 ia-32

我正在尝试使用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

我得到了正确的指针吗?如果是这样,我如何获得它的价值?如果没有,我如何获得正确的指针?

1 个答案:

答案 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))

我猜这不是你想要的,但你的问题并不是很清楚你期望在哪里发生。