首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寄存器耗尽,在Y86中遇到问题

寄存器耗尽,在Y86中遇到问题
EN

Stack Overflow用户
提问于 2013-04-13 04:08:17
回答 1查看 877关注 0票数 0

我目前正在使用一种称为Y86的教育汇编语言编写函数,AT&T语法,并试图完成/绕过它不支持的东西。我想把一个数字加到存储在内存中的一个值上,但是由于一些愚蠢的原因,你只能使用addl来加到一个寄存器中。我不知道为什么会这样。

在一个函数中,我想做这样的事情,但不知道怎么做:

代码语言:javascript
复制
addl $1, -4(ebp)

另外,我似乎遇到了寄存器耗尽的问题。也许是因为我不知道如何腾出空间来存储局部变量。我听说有一个概念,寄存器是由调用者和被调用者保存的。我非常感谢任何与上面相同但在Y86中的命令。另外,任何关于保存寄存器的技巧都会很棒!谢谢!我知道看这些东西真的很痛苦。

EN

回答 1

Stack Overflow用户

发布于 2013-04-13 04:41:04

在x86和Y86中,也可以使用push将寄存器推送到堆栈,并使用pop从堆栈中弹出寄存器。如下所示:

代码语言:javascript
复制
push %ax ; push ax into stack

; some code here that may overwrite ax.

pop %ax  ; pop ax from stack

x86的寄存器数量有限,所以很多时候需要使用内存来存储一些变量。

要在堆栈中为局部变量创建空间,您需要创建堆栈帧。参见What is stack frame in assembly?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15980017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档