看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《loveflames (咕啾咕啾魔法陣)》之銘言: struct S{ int a[10]; }; main(){ S test; test.a[0]=1; LPVOID x = &test; __asm mov eax,x; funA(); } funcA(){ S* lps; __asm mov lps,eax printf("test.a[0]=%x\n",lps->a[0]); } 如果像這樣呢 : 不用參數的取法 : #include <stdio.h> : struct S{ : int a[10]; : }; : void funcA(){ : int a; : __asm{ : mov edx,[ebp] : mov ebx,[edx-40]//如果compiler有對齊之類的就未必是40 : mov a,ebx : } : printf("test.a[0]=%x\n",a); : } : main(){ : struct S test; : test.a[0]=1; : funcA(); : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.78.26
purpose:乍看下應該可以的 (沒驗證) 10/15 13:18
loveflames:暫存器最好別用eax,因為很容易被改 10/15 13:20
SmallBeeWayn:我覺得原PO應該不是想要這麼底層的答案耶... 10/15 17:07
ilovebbs:大家應該都複雜化了吧..囧 10/16 09:57