您如何决定何时使用哪个跳转语句……JG JNLE JNC 之类的语句可以完成相同的工作,您如何区分它们?
最佳答案
当您在 CX 寄存器中有一个计数值用于限制循环中的迭代时,通常会使用 J(E)CXZ。
JMP 是无条件跳转,用于退出循环、在非基于 CALL 的接口(interface)中输入 API、构建跳转表等。
Conditional jumps 用于根据先前计算的条件更改执行线程。有很多同义词(记录在我刚刚提供的链接中)并且同义词通常是出于明显的原因。例如,JAE 的意思是“如果高于或等于则跳转”。这是JNC的同义词,意思是“没有携带就跳”和JNB,意思是“不低于就跳”。您使用哪个纯粹是为了让读者可以理解您的代码:
这实际上是语言设计中的一个经典问题:你是否制作了大量别名,使语法更复杂以有利于澄清语义,或者你是否以语义更难阅读为代价来限制你的“关键字”(这里是操作码助记符) ?
关于assembly - 汇编程序中跳转语句的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2355915/