mov     ecx, dword ptr[pTone] 没去到指
VC内嵌的asmpTone是一个指针
struct Tone
{
int red;
int green;
int blue;
int gray;
}
mov ecx, dword ptr
我看到的结果是。。。
pTone = 0x0013fe8c
pTone只想的数据
{
0x00000064
0x00000064
0x00000064
0x0000004b
}
exc = 0x0013fe8c
为啥ecx得到的是 pTone的值,而不是pTone指向的值啊??不应该得到 0x00000064吗??
Re:mov ecx, dword ptr[pTone] 没去
这个我也不太清楚,不过,这不属于汇编语法,而是要看编译器怎么翻译,因为pTone是C++里的变量,
我估计可能是这样的:
编译器只是把pTone看成一个变量,值就是他本身的地址,然后通过 来取该地址下的值,
所以, 得到的就是pTone的值,也就是pTone所指向的地址
就是说编译器不会检查pTone是不是指针,它是一律把中的X翻译成该变量本身的地址,就象汇编里一律把标号翻译成它的偏移地址一样
所以呢,如果你非要用C++变量做寻址的话,就一律用非指针的变量名就行了,
即:
Tone t = { 100, 200, 300, 400 };
__asm
{
movecx, dword ptr
}
也可以这样:
Tone t = { 100, 200, 300, 400 };
__asm
{
lea ebx, t
movecx, dword ptr
} 请改成 mov ecx, dword ptr [&pTone]
Re:mov???? ecx, dword ptr[pTone] 没去到指针指向的数据哇
很好,辛苦楼主发这么有意义的文章
页:
[1]