2

次のコードでrEDX, rEBX, rEBP, rESI and rEDIは、は構造体のメンバーですscratch_spacescratch_space_arg構造体のオブジェクトですscratch_space

lea eax, scratch_space_arg
mov [ecx+[eax].rEDX], edx
mov [ecx+[eax].rEBX], ebx
mov [ecx+[eax].rEBP], ebp
mov [ecx+[eax].rESI], esi
mov [ecx+[eax].rEDI], edi

このコードは私に:

error C2426: '[' : illegal operator in 'first operand'

すべてのmovステートメントに対して。これをどのように解決できるか考えていますか?

PS:私はこの記事structを使ってメンバーにアクセスしました。

4

1 に答える 1

2

構造要素を参照するいくつかの C コードを逆アセンブルすることをお勧めします。

struct scratch_space scratch_space_arg = { 0, 0, 0, 0, 0 };
int rEDX = scratch_space_arg.rEDX;
int rEBX = scratch_space_arg.rEBX;
int rEBP = scratch_space_arg.rEBP;
int rESI = scratch_space_arg.rESI;
int rEDI = scratch_space_arg.rEDI;
printf("%d %d %d %d %d\n", rEDX, rEBX, rEBP, rESI, rEDI);

そうすれば、自分で使用する正しい表記法がわかります。

于 2012-08-06T04:03:07.013 に答える