次の ASM コードがあります。
USE32
Start:
jmp Main
struc st
.stLong resd 1
.stWord resw 1
.stBuffer resb 32
endstruc
mystruc:
istruc st
at st.stLong, dd 1
at st.stWord, dw 1
iend
Main:
mov eax, 1
mov [mystruc+st.stLong], eax
NASM を使用してコンパイルし、次のコードを使用して、Visual C++ のデバッグ モードで生成されたバイナリを (段階的に) 実行しようとしました。
unsigned char hexData[50] = {
0xEB, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0xA3,
0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00
};
__asm{
lea eax, hexData
call eax
}
問題は、最初の命令 (jmp Main) を実行すると、常にアクセス違反例外が発生することです。:( ここで実際に何が起こっているのかわかりません。何が問題なのか教えてください。