|
|
近日解剖"帝国时代"练手,发现分析算法太难了~
楼主的毅力是比较好的。 分析游戏内存地址,配合金山游侠(用GM8好点)扫描内存中的数据变化还是很有用的,调试软件无法自动扫描内存中数据段的变化的。 不过,楼主的主要目的不是为了修改游戏,而是为了学习,所以不用金山游侠之类也是可以理解的。 大家跟楼主思考方向和目标不同。所以还是少点苛责,多点支持。 支持。顶起。呵呵! |
|
|
[求助]求助关于汇编浮点数取整的问题
解决了,VC6中实验,代码如下: int CTestDlg::ToInt(double f_in) { int i_out; unsigned short int cr_0,cr_t; __asm { // FPU控制字的意义 // 027F:四舍五入取整 15.555 -> 16 // 0E7F:抹去小数部分取整 15.555 -> 15 FLD f_in // f_in 压栈 WAIT FSTCW cr_0 // FPU控制字(027F) -> cr_0 WAIT MOV AX,cr_0 // cr_0 -> AX OR AH,0xC // AH(0010) or 0xC(1100) -> AH(1110) MOV cr_t,AX // AX(0E7F) -> cr_t FLDCW cr_t // cr_t(0E7F) -> 浮点控制寄存器 FISTP i_out // 将栈顶的数据取整 FLDCW cr_0 // cr_0(027F) -> 浮点控制寄存器 } return i_out; } 继续实验,代码如下: int i_out; double f_in; for(f_in=15;f_in<16;f_in+=0.000000001) { i_out = ToInt(f_in); if(i_out != (int)(f_in)) ::AfxMessageBox("不等价于(int)(f_in)!!"); } 结果是FPU控制字为0E7F时,完全等价于C++中的(int)() 呵呵。舒服ing. |
|
|
[求助]求助关于汇编浮点数取整的问题
各位在线的朋友,进来帮助一下吧,谢谢了 |
|
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值