Kernel Qemu-无效操作码
我在内核代码中遇到意外的“无效操作码”异常,该异常仅在以下情况下出现:Kernel Qemu-无效操作码,kernel,clang,qemu,Kernel,Clang,Qemu,我在内核代码中遇到意外的“无效操作码”异常,该异常仅在以下情况下出现: 在QEMU中运行代码(公平地说,我实际上没有尝试过任何其他模拟器/硬件) 代码是用-O2或更高版本编译的。如果使用-O0或-O1编译,则不会引发异常 显然,clang正在输出一些qemu不支持的操作码,但我不确定如何解决这个问题。如果可能的话,我希望避免使用较低的优化级别进行编译 相关代码似乎相当无害-它只是在位图数组中填充值: for (uint32_t i = 0; i < kNumBitmapEntries; i
for (uint32_t i = 0; i < kNumBitmapEntries; i++) {
if (i > map_index) {
bitmaps[i] = ~0;
} else {
bitmaps[i] = 0;
}
}
(uint32\u t i=0;i{
如果(i>map\u索引){
位图[i]=~0;
}否则{
位图[i]=0;
}
}
是否有办法启用/添加正在生成到qemu的操作码?clang生成的指令需要先启用,然后才能使用。对于遇到类似问题的任何人,SSE指令可以通过以下方式启用