VC++6.0中如何使用CPU寄存器
if (_EAX==0x412321L) ...
怎样通过编译。本人不想用 _asm。
问题点数:50、回复次数:7Top
1 楼minrel(argc[],argv)回复于 2001-12-12 23:21:13 得分 0
C语言有种寄存器变量
register int i;Top
2 楼Areslee(懒虫易水)回复于 2001-12-13 09:12:24 得分 0
不用_ASM那就没有办法了:(Top
3 楼missdeer(思鹿)回复于 2001-12-13 12:41:10 得分 0
VC不支持寄存器变量,只能用_asm了……Top
4 楼kacer(望穿秋水)回复于 2001-12-13 15:14:45 得分 0
to Mr. minrel(minrel):
我能将 i 强制为某一寄存器吗?比如 _EAX。
BC 是可以用 _EAX 之类,VC却……大虾救命,
否则编译之后的手工优化工作量太大。Top
5 楼masterz(www.fruitfruit.com)回复于 2001-12-13 21:58:40 得分 50
如果只要求编译通过你上面得语句,可以这么做:
#define _EAX func()
__declspec ( naked ) int func()
{
_asm
{
ret
}
}
。。。。。。。。。。。。。。。。
__asm{
mov eax,0x1234
}
int a=_EAX;
if(_EAX==0x1234)
{
AfxMessageBox("eax is 0x1234");
}
else
{
CString msg;
msg.Format("eax is %d",a);
AfxMessageBox(msg);
}
Top
6 楼kacer(望穿秋水)回复于 2001-12-20 09:24:30 得分 0
to masterz():
我想不出更好的方法。我是想达到寄存器直接编译的目的。
你的方法不能满足 _ECX==0x123 的情况。我只能以后手工优化。
怎么给你分?嘿嘿……我没见给分菜单。
Top
7 楼kacer(望穿秋水)回复于 2001-12-20 09:27:56 得分 0
哈哈。我看见了。Top
相关问题
- 寄存器???缓存???
- 寄存器应用
- 寄存器清0
- 菜鸟问题15: 存储器地址寄存器(MAR)是在主存还是CPU中?
- 在7个通用寄存器中(除esp),是不是可以由程序随便使用,调用函数(尤其API)后除eax返回值,还有那些寄存器被占用,
- ****************请教在BCB中的调试器能否象VC++一样查看变量,寄存器!!!请教各位,分全给!!!**************
- 很陋的问题:VC里对寄存器的输出输入函数有哪些,象InPut,OuPut等,我不能确定函数名具体是不是这样
- 请问:FPU里的寄存器堆栈和我们的自己定义的stack堆栈在使用上有什么区别吗?
- 关于32位寄存器eax---
- 有关寄存器变量的问题




