|
1
2
必须在BSS部分声明缓冲区,并在数据中声明bufsize
|
![]() |
2
8
哦,这会很有趣的。 程序集语言没有变量。这是一个更高级的语言结构。在汇编语言中,如果需要变量,可以自己生成。上坡。两种方式。在雪地里。 如果需要缓冲区,则必须使用堆栈的某个区域作为缓冲区(在调用适当的堆栈帧设置指令之后),或者使用堆上的某个区域。如果您的堆太小,您将不得不发出一个系统调用指令(另一个int 80h)来请求操作系统提供更多(通过sbrk)。 另一种选择是学习ELF格式,并在适当的部分创建一个全局变量(我认为是.data)。 任何这些方法的最终结果都是可以使用的内存位置。但是你唯一真正的“变量”,就像你从现在美妙的C世界习惯的那样,是你的寄存器。而且它们的数量也不多。 汇编程序可能会帮助您使用有用的宏。阅读汇编程序文档;我不记得它们在我的头上。 在ASM层面上,生活是艰难的。 |
![]() |
3
0
调用open之后,文件句柄位于eax中。您正确地将eax移到ebx,在那里read调用将查找它。不幸的是,此时您已经用3(用于读取的系统调用)覆盖了它。 |
![]() |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Arya · 汇编语言中的“标签”——操作码 2 年前 |
![]() |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 2 年前 |
![]() |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 2 年前 |
![]() |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 2 年前 |