Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 日本脑炎能跳多远有限制吗?_Assembly_X86 - Fatal编程技术网

Assembly 日本脑炎能跳多远有限制吗?

Assembly 日本脑炎能跳多远有限制吗?,assembly,x86,Assembly,X86,我听说x86指令集中的条件跳转指令限制在256字节。(换句话说,跳转不能超过256字节。) 这是真的吗?我一直在编写涉及JMP指令的逻辑来解决这个问题。是否有必要?IA32支持8位、16位和32位条件相对跳转。x86_64支持8位和32位条件相对跳转。看 无论如何,若标签超出跳转范围,汇编程序(或链接器,若涉及重新定位)应该警告您 PS:在实模式(和虚拟8086模式)下,条件跳转限制为+/-127的偏移量。此处另一个答案的一个小附录(否则是正确的): 你的跳跃永远不会“超出范围”。特定的编码,

我听说x86指令集中的条件跳转指令限制在256字节。(换句话说,跳转不能超过256字节。)


这是真的吗?我一直在编写涉及JMP指令的逻辑来解决这个问题。是否有必要?

IA32支持8位、16位和32位条件相对跳转。x86_64支持8位和32位条件相对跳转。看

无论如何,若标签超出跳转范围,汇编程序(或链接器,若涉及重新定位)应该警告您



PS:在实模式(和虚拟8086模式)下,条件跳转限制为+/-127的偏移量。

此处另一个答案的一个小附录(否则是正确的):

你的跳跃永远不会“超出范围”。特定的编码,以及对任何相对跳转使用32位、16位或8位偏移量的决定,将由汇编程序进行。这通常称为“指令选择”。在任何情况下,给定“eip”的任何32位值,总有一些32位有符号位移,当添加到“eip”时,将等于任何任意32位地址

这意味着您可以通过一次跳转从程序中的任何位置跳转到其他任何位置


8位和16位形式的“jump/cc”只允许您在指令流中使用更少的字节来实现这一点。

请注意,x86_64不一定如此,因为没有64位相对跳转。不过,要遇到这种情况,你必须做一些非常奇怪的事情。(在实模式中也不是这样,条件跳转被限制为+/-127的偏移量)。啊哈!我知道我听到了一些关于条件跳跃的消息。一定是来自真实模式汇编的书。不过,感谢您的回答-我正在编写的代码不会在真实模式下运行。