SPARC 中的 jmpl 和 restore 指令顺序重要吗?

Son*_*fEl 1 io assembly sparc

在这里读到一条jmpl指令必须跟在 nop.

SPARC V8 手册告诉我一条rett指令必须总是一条jmpl指令之前

但是,我一直无法找到jmplrestore指令之间的关系。我目前正在对SPARC V8架构和ELF的一个文件,我遇到有restore右后jmpl,而我希望的nop。我不知道这是正确的还是 ELF(以及扩展的 SPARC 代码)是错误的。

restore正确的权利jmpl吗?

Mar*_*nau 6

我在这里读到一条jmpl指令必须跟在nop.

...您链接的页面会告诉您原因:

所以,当你在SPARC程序,按照每一个calljmpl指示与nop指令,以避免unintentially执行额外的指令......

这意味着:这nop不是对 CPU 的要求,而是网页作者对程序员避免错误的建议。

在另一页相同课程的作者解释说,一个专业的程序员(或C编译器)可以使用下面的序列从一个函数返回:

jmpl %i7+8, %g0
restore
Run Code Online (Sandbox Code Playgroud)

这意味着它不仅允许restorejmpl指令的延迟槽中使用,而且它甚至是从函数返回的正常序列。