- 注册时间
- 2012-9-7
- 最后登录
- 2013-5-22
③业余
- 积分
- 128

|
发表于 2012-10-26 23:55:06
|
显示全部楼层
Re:mov ecx, dword ptr[pTone] 没去
这个我也不太清楚,
不过,这不属于汇编语法,而是要看编译器怎么翻译,因为pTone是C++里的变量,
我估计可能是这样的:
编译器只是把pTone看成一个变量,值就是他本身的地址,然后通过[pTone] 来取该地址下的值,
所以,[pTone] 得到的就是pTone的值,也就是pTone所指向的地址
就是说编译器不会检查pTone是不是指针,它是一律把[X]中的X翻译成该变量本身的地址,就象汇编里一律把标号翻译成它的偏移地址一样
所以呢,如果你非要用C++变量做寻址的话,就一律用非指针的变量名就行了,
即:
Tone t = { 100, 200, 300, 400 };
__asm
{
mov ecx, dword ptr[t]
}
也可以这样:
Tone t = { 100, 200, 300, 400 };
__asm
{
lea ebx, t
mov ecx, dword ptr[ebx]
} |
|