gpt4 book ai didi

assembly - MIPS中需要初始化寄存器吗

转载 作者:行者123 更新时间:2023-12-02 18:57:52 25 4
gpt4 key购买 nike

用汇编语言编写函数时需要将寄存器初始化为0吗?

只是为了确保这些寄存器中没有以前程序中的值。

最佳答案

一般来说,可能是的。

程序启动时的寄存器状态取决于操作系统。例如,如果您运行的操作系统遵循 ELF psABI for MIPS ,则寄存器 $2、$29 和 $31 在程序启动时具有有意义的值,而其他寄存器包含未指定的值 - 请参阅“进程初始化”部分。

听起来您可能对程序函数之间的区别感到困惑。 psABI 中也记录了函数在输入时的预期 - 请参阅同一文档中的“函数调用序列”部分 - 简短版本为 $4-$7、$25、$28、$29、$31 、$f12、$f13、$f14 和 $f15 可能包含有用的值,所有其他值均未指定,并且您有义务确保在 $16-$23、$28、$29、$30 和 $ 中找到的值进入时的 f20-$f31 在退出时保持不变(即,如果您更改它们,则必须保存旧值并在退出前恢复它们;相反,如果您自己调用函数,则必须假设它已覆盖所有 other 在返回之前注册未指定的值)。

如果您使用的操作系统支持 ELF psABI,那么您需要找到适合您的操作系统的等效文档。某处会有一些规范。不过,可以想象,您必须对编译器进行逆向工程才能获得它。

关于assembly - MIPS中需要初始化寄存器吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40811928/

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