Rob*_*cía 4 c c++ linux assembly intel
我有一个linux".a"库,它被编译为适用于x86.我没有这个库的源代码,程序员也不会给我它.在使用这种架构的PC中运行我的程序没有任何问题,但是最近我推出了一个带有Intel Quark处理器的嵌入式系统.这个处理器有一个简化的指令集,所以当我编译我的程序并尝试运行它时,我得到一个明确的信息:"非法指令".
我知道这不是一个内存违规问题,因为当我使用GDB调试它时,它在一个像CMOVE这样的操作码的指令中完全失败,CMOVE属于Pentium Pro处理器中引入的CMOVxx指令集.在我的嵌入式Linux系统(Ubuntu 14.04)/ proc/cpuinfo"flags"字段中没有显示"cmov",所以这是确认的.
那么,我该如何覆盖这个问题呢?
是否存在将此操作码转换为另一个夸克友好指令的任何类型的包装器?我知道如何在Windows中使用OllyDbg(允许ASM修补和保存可执行文件)来完成它,但是在Linux中我没有类似的解决方案.
任何建议都将受到欢迎.