iPad的iSH环境中LOOP指令触发非法硬件指令问题咨询
问题解答
没错,你的猜测基本正确——iSH的x86模拟器大概率没实现
LOOP指令,核心原因就是这条指令现在几乎被编译器彻底抛弃了,模拟器开发者没必要为这种极低使用率的指令付出实现成本。具体细节:
LOOP属于x86架构里的老旧指令,功能上完全等价于dec %ecx加jnz label,但现代CPU对它的执行效率不如拆分后的两条简单指令,所以GCC、Clang这类主流编译器默认根本不会生成LOOP代码,只有手动写汇编的人才会用到它。- iSH是iOS上的轻量x86 Linux模拟器,本质是把x86指令转译成ARM指令执行。对于这种几乎不会出现在编译生成代码里的冷门指令,开发者通常会选择跳过实现,以此简化模拟器的逻辑、减少维护负担。
- 你换成
dec %ecx jnz label能正常运行,也正好说明模拟器对这类常用基础指令是完整支持的,只是漏掉了LOOP这种边缘指令。
内容的提问来源于stack exchange,提问作者Mark Reed
相关产品推荐
相关产品推荐

