使用SHA256 Intel指令触发SIGILL非法指令错误的问题咨询
问题解答
错误核心原因
你的处理器Intel i5-2500s属于Sandy Bridge架构,而Intel SHA扩展指令集(包括SHA256msg1这类指令)是从Haswell架构才开始引入支持的。硬件本身不支持这些指令,所以执行时会触发SIGILL非法指令错误,这和保护模式没有关系。
关于非保护模式的疑问
即使在非保护模式下运行这段代码,依然会报错。指令能否执行的核心限制是CPU硬件是否支持对应指令集,而非运行模式。你的CPU不具备SHA扩展指令的硬件支持,不管在什么模式下都无法执行这些指令。
额外提示
- 若要测试SHA256相关指令,需使用Haswell或更晚架构的Intel处理器;
- 你的代码还存在缺失:没有定义
_quit标签的执行逻辑,也未声明d1、d2数据段内容,即便CPU支持指令,这些问题也会导致程序运行异常。
内容的提问来源于stack exchange,提问作者Ivan Fassoli
相关产品推荐
相关产品推荐

