首页
社区
课程
招聘
[求助]请问:在vc程序中如何获得寄存器的值?即如何c代码中将eax的值给变量?
发表于: 2009-8-24 19:10 4961

[求助]请问:在vc程序中如何获得寄存器的值?即如何c代码中将eax的值给变量?

2009-8-24 19:10
4961
我试了
int b = eax;
但有错误啊?
应如何写

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 403
活跃值: (29)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
2
int b;
_asm mov b,eax;
cout<<b<<endl;

这样就可以了
2009-8-24 21:15
0
雪    币: 202
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
EAX是通用寄存器,随时会变化的!
2009-8-25 08:32
0
雪    币: 133
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的意思是在C语言中使用eax
比如,
return eax;
if (b > eax>; 等等c语言语句
2009-8-25 08:57
0
雪    币: 179
活跃值: (26)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
C语言语句不能直接访问寄存器,所有的高级语言都不能。
所以编译器不知道你的b>eax是什么意思。
如果想使用寄存器的话可以使用内联汇编。
2009-8-25 09:10
0
雪    币: 205
活跃值: (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
int eax = FindWindow(NULL,NULL);
2009-8-27 03:05
0
雪    币: 280
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不有寄存器变量吗?
我不大会用   可以试试
2009-8-27 09:45
0
雪    币: 202
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
看来LZ还不解编程 ,还有汇编语言,还有编译原理
EAX,EBX,ECX,EDX,ESP,EBP等等都是CPU里的通用寄存器
像你C语言用寄存器?只有汇编语言才可以操作读取寄存器
retrun eax ???这不是语法错误嘛,C语言没有eax关键字
一般C语言编译器是用eax做为返回值,但也不是一定得要这样,是看编译器怎么生成机器代码了
比如
int ret;
__asm
{
     call MyFun
     mov ret,eax //把eax放到ret来
   }
  
  return ret;
2009-8-27 11:50
0
游客
登录 | 注册 方可回帖
返回
//