
c语言如何读寄存器的值
比如,我写个主函数intmain(){intregvalue,*regaddress;regaddress=(int*)0x10001130;regvalue=readr...
比如,我写个主函数
int main()
{
int regvalue,*regaddress;
regaddress=(int *)0x10001130;
regvalue=readreg(regaddress);
return 0;
}
readreg(int32 rega)
函数体怎么写 展开
int main()
{
int regvalue,*regaddress;
regaddress=(int *)0x10001130;
regvalue=readreg(regaddress);
return 0;
}
readreg(int32 rega)
函数体怎么写 展开
3个回答
展开全部
在C语言中可以使用内联汇编获取寄存器的值。不同的编译器使用内联汇编的方法不同,在VC/VS中使用内联汇编的关键为__asm,在gcc中使用内联汇编的关键字为asm。
以vc6.0、IA32 cpu为例,提取通用寄存器eax、ebx、ecx、edx的值。
#include <stdio.h>
#include <string.h>
int main()
{
unsigned ueax,uebx,uecx,uedx;
__asm //使用__asm进行内联汇编
{
//使用mov指令将eax寄存器的内容保存到ueax变量
mov ueax, eax
mov uebx, ebx
mov uecx, ecx
mov uedx, edx
}
printf("eax=%x\tebx=%x\tecx=%x\tedx=%x\n", ueax, uebx, uecx, uedx);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int readreg(int *p)
{
return *p;
}
C语言在windows操作系统下只能实现上述功能,读取某内存地址的内容,例如0x10001130;内存地址为虚拟内存地址,物理内存地址的内容是读不到的,它已经被windows操作系统给保护起来了。
{
return *p;
}
C语言在windows操作系统下只能实现上述功能,读取某内存地址的内容,例如0x10001130;内存地址为虚拟内存地址,物理内存地址的内容是读不到的,它已经被windows操作系统给保护起来了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |