在 NASM 中打印环境变量

Print environment variables in NASM

我想知道如何在 NASM 中打印环境变量。

我们在class中了解到命令行参数的数量存储在EAX寄存器中,第一个参数的地址存储在EDX寄存器中的位置。但是,这对我不起作用,因为 EDX 寄存器中没有写入任何内容。

我看到了一些其他的方法来做到这一点,其中以某种方式使用了 ESP 寄存器,但我没有真正找到完整的解释。

如果有人对这个——对我来说——令人困惑的事情有一个清晰明了的解释,我将不胜感激。

看看下面的相关post:Why does this NASM code print my environment variables?.

你也可以看看startup state of a Linux binary

简而言之,环境变量列在 NULL 值之后,该值跟在命令行参数之后。