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)
函数体怎么写
展开
 我来答
电子数码小百科NW
2020-02-16 · TA获得超过6496个赞
知道答主
回答量:15
采纳率:0%
帮助的人:4423
展开全部

1、首先,输入寄存器变量关键字【register】。

2、然后输入变量的类型。

3、接下来输入变量名。

4、然后就可以i开始i对他进行应用。

5、那么来看看寄存器变量的作用。

6、其实,寄存器变量就是靠近寄存器的空间,就完成了。


注意事项:

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。

吉祥二进制
高粉答主

推荐于2017-10-06 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84594

向TA提问 私信TA
展开全部

在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;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcofjp
推荐于2017-09-11 · TA获得超过560个赞
知道小有建树答主
回答量:443
采纳率:0%
帮助的人:269万
展开全部
int readreg(int *p)
{
return *p;
}
C语言在windows操作系统下只能实现上述功能,读取某内存地址的内容,例如0x10001130;内存地址为虚拟内存地址,物理内存地址的内容是读不到的,它已经被windows操作系统给保护起来了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式