关于X86_64Linux环境下suffix or operands invalid for ‘mov’问题的研究
2012-07-19 15:54
621 查看
今天帮助朋友调试运行某一linux下的文件加密驱动程序,遇到如下问题:
同样一份c代码分别在32位和64位的CentOS6.0下编译运行,32位系统能够运行正常,而64位系统报suffix or operands invalid for ‘mov’的错误。
出错语句为:
[cpp] view plaincopy
asm volatile ("movl %%eax, %%cr0"
:
:"a"(cr0));
错误经研究后找到产生原因,主要是由于操作系统的系统结构发生了变化,在x86-64中,所有通用寄存器(GPRs)都从32位扩充到了64位,名字也发生了变化。8个通用寄存器(eax, ebx, ecx, edx, ebp, esp, esi, edi)在新的结构中被命名为rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi。movl命令也需相应改成movq。
将上述代码改成
[cpp] view plaincopy
asm volatile ("movq %%rax, %%cr0"
:
:"a"(cr0));
编译通过。
PS:不过运行后又爆出了segmentation fault core dump 错误,看来革命尚未成功同志还需努力…
同样一份c代码分别在32位和64位的CentOS6.0下编译运行,32位系统能够运行正常,而64位系统报suffix or operands invalid for ‘mov’的错误。
出错语句为:
[cpp] view plaincopy
asm volatile ("movl %%eax, %%cr0"
:
:"a"(cr0));
错误经研究后找到产生原因,主要是由于操作系统的系统结构发生了变化,在x86-64中,所有通用寄存器(GPRs)都从32位扩充到了64位,名字也发生了变化。8个通用寄存器(eax, ebx, ecx, edx, ebp, esp, esi, edi)在新的结构中被命名为rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi。movl命令也需相应改成movq。
将上述代码改成
[cpp] view plaincopy
asm volatile ("movq %%rax, %%cr0"
:
:"a"(cr0));
编译通过。
PS:不过运行后又爆出了segmentation fault core dump 错误,看来革命尚未成功同志还需努力…
相关文章推荐
- 关于报错ld: symbol(s) not found for architecture x86_64不是代码问题
- 关于Linux初次获取USB设备描述符策略问题(8 or 64)
- Maximum SHMMAX values for Linux x86 and x86-64 (Doc ID 567506.1)
- mac 关于使用protobuf出现ld: symbol(s) not found for architecture x86_64的问题
- 关于clang: error: invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later)的错误问题
- 项目中某些静态库缺少,或者编译环境的问题造成的相关编译错误(Undefined symbols for architecture x86_64:)
- mysql 5.7.20, for Linux (x86_64) 配置远程连接 10061问题解决方案
- Oracle 11g R2 11.2.0.2 patch for linux x86_64 迅雷可下载地址
- IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题
- 关于程序在64位系统上运行报错的问题:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_
- 关于在linux AS4 U2 x86_64 上安装 oracle10gR2的问题
- 关于iTunes connect审核“Missing or invalid signature”的问题
- Undefined symbols for architecture x86_64: "_crc32", 问题的解决
- 关于linux环境下GCC与g++编译器高低版本转换的问题
- tenda u1 usb wireless device install driver for kali linux kernal Debian 4.3.3-7kali2 (2016-01-27) x86_64 GNU/Linux
- 关于Tomcat配置https/SSL报“No Certificate file specified or invalid file format”的问题
- 关于wamp+eclipse for PHP环境的搭建以及其中部分问题的解决办法
- Linux环境下进入MySQL环境报权限问题:Access denied for user 'root@localhost' (using password:YSE)
- 转载Xcode7编译遇到linking in object file built for OSX, for architecture x86_64问题解决方案
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题