c语言如何读寄存器的值

[复制链接]
查看11 | 回复1 | 2020-2-16 13:31:41 | 显示全部楼层 |阅读模式
在C语言中可以使用内联汇编获取寄存器的值。不同的编译器使用内联汇编的方法不同,在VC/VS中使用内联汇编的关键为__asm,在gcc中使用内联汇编的关键字为asm。以vc6.0、IA32 cpu为例,提取通用寄存器eax、ebx、ecx、edx的值。#include#includeintmain(){unsignedueax,uebx,uecx,uedx;__asm//使用__asm进行内联汇编{//使用mov指令将eax寄存器的内容保存到ueax变量movueax,eaxmovuebx,ebxmovuecx,ecxmovuedx,edx}printf("eax=%x\tebx=%x\tecx=%x\tedx=%x\n",ueax,uebx,uecx,uedx);return0;}


回复

使用道具 举报

千问 | 2020-2-16 13:31:41 | 显示全部楼层
int readreg(int *p){
return *p;}C语言在windows操作系统下只能实现上述功能,读取某内存地址的内容,例如0x10001130;内存地址为虚拟内存地址,物理内存地址的内容是读不到的,它已经被windows操作系统给保护起来了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行