我知道这里和其他地方有很多关于避免使用高级编程语言的帖子。然而,从我在MIPS汇编中编写的(通常很小的)经验来看,在实现控制流时,似乎没有一种明显的方法可以避免在汇编中使用goto和jump语句。
例如,如何在汇编中实现此代码(C等效):
if (x < 2)
{ ans = 0; }
else
{ ans = 1; }
是否需要使用goto或jump语句,或者是否有正确的方法来避免使用它们以支持更合适的代码实践?
答案 0 :(得分:10)
避免在高级编程语言中使用goto的建议仅适用于 - 高级语言。
汇编程序是一种低级语言,跳转是必不可少的。
答案 1 :(得分:3)
您无法完全避免使用跳转操作,因为您已经在与处理器直接对话。
但是通过更好的练习,您正在使用高级编程,您仍然可以在汇编代码中使用较少的跳转。
一些想法如下:
答案 2 :(得分:1)
当每个人都迫使您不要在高级语言中使用 goto 时,不使用 goto 是(有点)可以理解的。但是要将其转移到汇编中......在汇编中编码时不使用jmp是完全不可能的,因为没有像for或while这样的隐藏的goto指令。
答案 3 :(得分:0)
虽然它不是MIPS,但对于X86处理器,在Microsoft汇编程序ML.EXE(16/32位)和ML64.EXE(64位)的情况下,自MASM 6.11以及所有版本的Visual Studio ,你可以使用点指令:
.if x < 2
mov ans,0
.else
mov ans,1
.endif
在此示例中,点指令转换为立即比较和立即移动。有关更多信息,请参阅