小编Mr.*_*ark的帖子

寄存器和堆栈的大小在汇编 x86 中的真正含义是什么

我是汇编新手,我真的很困惑,我读了几篇文章和书籍,但我不明白这是什么意思

在汇编 x86 中,我们有不同的寄存器,每个寄存器都有特定的大小,例如

EAX:32位

Q1-32 位的真正含义是什么?这是否意味着,我只能存储 32 位大小的值?

如果是

Q2 - 如果我有很长的字符串,我如何将该字符串移动到我的寄存器?

Q3 - 我想确切地知道何时应该从堆栈中压入和弹出?

Q4 我可以将我的值存储在寄存器中而无需堆栈,为什么我们有堆栈?解决哪个问题?

如果我们举个例子,这里是我的 C 代码:

#include<stdio.h>

main() 
{
    printf("Hello World");

}
Run Code Online (Sandbox Code Playgroud)

在这里,我们将 Hello world 传递给 printf 函数,无论大小,我都可以传递任何东西,如果我将此代码翻译为汇编,首先我必须将系统调用参数移动到寄存器,然后调用系统调用,然后调用 int 0x80。如果在“你好世界”状态下我有一个段落怎么样?

Q5 - 当我将任何数据移动到寄存器时,我如何选择应该将数据移动到哪个寄存器?

谢谢 。

x86 assembly

0
推荐指数
1
解决办法
1555
查看次数

标签 统计

assembly ×1

x86 ×1