如何使用C++从寄存器读取值
how can i read value from register using C++
我正在用计算器的C++扭曲代码,但它通过汇编显示\读取结果,我想将值存储在任何寄存器中,例如( Al )到C++中的变量 int...我搜索了,但我总是用C语言找到它......
如果要将al
中的值读取到int
:
海湾合作委员会:
unsigned char out;
asm volatile("movb %%al, %[Var]" : [Var] "=r" (out));
或
unsigned char out;
asm volatile("movb %%al, %0" : "=r" (out));
对于 MSVC:
unsigned char c;
__asm movb c, al
没有官方的C++方式,它源于C。
编辑
您可能还需要:
register unsigned char out asm("%al");
但那是海湾合作委员会。
它依赖于编译器。对于使用 GCC 的英特尔:
//Read value from register
int x;
asm ("mov %0, AI;"
:"=r"(x)
);
参考这里
你的意思是:
int read_register_eax()
{
int ret;
asm { mov [ret],eax }
return ret;
}
相关文章:
- 本质:使用__128寄存器
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 使用英特尔 PIN 修改寄存器
- AVX 指令中寄存器和指针之间的客观差异
- 如何确定我的处理器有多少个 AVX 寄存器?
- 除非使用某些寄存器,否则函数挂钩会崩溃
- 寄存器上的管道计算
- 其中关于内存和寄存器的左值和右值
- 有没有办法强制C++编译器将变量存储在寄存器中?
- "变量":函数中函数作用域不允许初始化的自动或寄存器变量'naked'
- Atmel Studio:返回一个包含数组的寄存器
- 使用 googletest 测试嵌入式C++代码时处理外设寄存器的重复符号
- 移位寄存器74HC595输出电流
- gdb如何读取它正在调试的程序/进程的寄存器值?寄存器如何与进程相关联?
- MSVC:在64位代码中读取特定的64位或32位寄存器(例如R10)
- 如何读取寄存器:RAX、RBX、RCX、RDX、RSP.RBP、RSI、C或C++中的RDI
- 如何使用C++从寄存器读取值
- 读取eax寄存器
- 从microsoftc++中读取RSP寄存器