错误:错误的寄存器名称'%rax'MinGW,Windows 7,x64 CPU,C ++
在我之前的主题中:如何读取寄存器:RAX,RBX,RCX,RDX,RSP。 C或C ++中的RBP,RSI,RDI? 我询问有关阅读这些寄存器 现在我写了一个代码来阅读(就目前来说)RAX和RBX。
我使用Windows 7 64位操作系统,CodeBlocks与MinGW作为编译器和Im在x64 CPU上工作。 当我试图编译下面的代码时,我得到了这些错误:
Error: bad register name `%rax'
Error: bad register name `%rbx'
代码:
#include <iostream>
#include <cstdlib>
#include <stdint.h>
void read(void)
{
uint64_t rax = 0, rbx = 0;
__asm__ __volatile__ (
/* read value from rbx into rbx */
"movq %%rbx, %0;n"
/* read value from rax into rax*/
"movq %%rax, %1;n"
/* output args */
: "=r" (rbx), "=r" (rax)
: /* no input */
/* clear both rdx and rax */
: "%rbx", "%rax"
);
/* print out registers content */
std::cout << "RAX = " << rax << "n";
std::cout << "RBX = " << rbx << "n";
}
int main(int argc, char **argv)
{
read();
return 0;
}
我怀疑你的错误来自“clobber”行:
: "%rbx", "%rax"
应该是这样的:
: "rbx", "rax"
(哦,别问我为什么!)
编辑:您还需要使用-m64或类似编译器进行64位编译,假设您首先具有64位的MingW编译器。
链接地址: http://www.djcxy.com/p/85915.html上一篇: Error: bad register name `%rax' MinGW, Windows 7, x64 CPU, C++
下一篇: 64 having trouble writing command line arguments, returning