gpt4 book ai didi

assembly - 使用 esp 寄存器

转载 作者:行者123 更新时间:2023-12-02 01:44:22 25 4
gpt4 key购买 nike

我试图了解如何将堆栈与程序集一起使用,在我尝试时,我在 SO 中的一个问题中遇到了以下代码,即:

push    ecx

mov eax, 4
mov ebx, 1
mov ecx, result
mov edx, result_len
int 0x80

mov eax, 4
mov ebx, 1
mov ecx, esp
add [ecx], DWORD 48
mov edx, 2
int 0x80

在这种情况下,ecx 持有一个数字,作者通过(如果我错了请纠正我!)首先将堆栈指针移动到 ecx,然后通过向内存中添加 48 将数字转换为 ascii 字符ecx 指向的地址。他是否能够通过“pop ecx”做同样的事情然后转换为 ascii?我不太明白作者为什么要这样处理。任何帮助将不胜感激。

最佳答案

Would he have been able to do the same thing by "pop ecx" and then convert to ascii?

没有。 sys_write 系统调用需要一个指向要打印的字符串的指针。通过将 ecx 压入堆栈,您在 esp 中创建了一个指针(地址)。

关于assembly - 使用 esp 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com