能力值:
( LV2,RANK:10 )
|
-
-
2 楼
lea eax, [eax+eax+2]
执行完了,按你的说法eax里面就是0x00000022,不是去[0x00000022]里面取值。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
就如上面 icersg 说的
lea eax, [eax+eax+2]
实际上是 eax=eax+eax+2 => eax=2*eax+2
如果结果超出 eax 的范围,可以用乘法来完成.
LocalAlloc 只能申请4G的内存,如果需要4G以上的内存可以考虑用内存映射文件
还有确认是否需要4G 以上的内存,还是
77F5BC38 mov eax, [ebx] ;这个[ebx] 的值记算错误 .
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
哈哈,谢谢两位兄弟。明白了
|
能力值:
(RANK:260 )
|
-
-
5 楼
lea指令是编译器用来计算某些算术表达式的,得到的结果不是用来当指针的。
一般,当乘数是2的幂时,编译器会用移位指令,
而有些数乘如乘以5,乘以3,编译器会用这样的指令,lea eax, [eax+4*eax], lea eax,[eax+2*eax]来实现,这样比乘法指令要更好一些。
而你给的这个,就是计算 eax *2 + 2 这个表达式的。
|
|
|