我是汇编新手,我真的很困惑,我读了几篇文章和书籍,但我不明白这是什么意思
在汇编 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 - 当我将任何数据移动到寄存器时,我如何选择应该将数据移动到哪个寄存器?
谢谢 。