【发布时间】:2008-12-03 16:50:56
【问题描述】:
本学期我刚刚完成了一门计算机体系结构课程,除其他外,我们一直在涉足 MIPS 汇编并在 MARS 模拟器中运行它。今天,出于好奇,我开始在我的 Ubuntu 机器上摆弄 NASM,基本上只是从教程中拼凑起来,感受 NASM 与 MIPS 的不同之处。这是我目前正在查看的代码 sn-p:
global _start
_start:
mov eax, 4
mov ebx, 1
pop ecx
pop ecx
pop ecx
mov edx, 200
int 0x80
mov eax, 1
mov ebx, 0
int 0x80
这被保存为 test.asm,并与nasm -f elf test.asm 组装并与ld -o test test.o 链接。当我使用./test anArgument 调用它时,它会按预期打印'anArgument',然后是将该字符串填充到总共200 个字符所需的字符数(因为mov edx, 200 语句)。不过,有趣的是,这些填充字符(我原以为会是乱码)实际上来自我的环境变量的开头,如env 命令所显示的那样。为什么这会打印出我的环境变量?
【问题讨论】: