我对为什么/如何在 Linux 环境中的 x86 程序集中打印一个值感到困惑。
例如,如果我想打印一个值,我会这样做:
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx msgLength
int 80h
现在我明白数值4将在中断后对sys_write进行系统调用。但我的问题是,4有什么意义?是否将十进制值4的地址加载到eax
?或者将值 4 加载到eax
登记?
读完后我很困惑我可以使用以下指令将地址处的值传输到寄存器:
mov eax, [msg]
eax
现在将包含地址处的字节msg
,但我猜这种格式是不可接受的:
mov eax, [4]
那么,当我将 4 移入 eax 来打印某些内容时,到底发生了什么?
只需将值(数字)4 加载到eax
,那里没有魔法。操作系统将查看其中的值eax
弄清楚你想要什么功能。系统调用号是标识您可以使用的各种可用内核函数的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)