Visual Studio 2010プロジェクトでASMファイルを実行すると、asm関数が呼び出された後にクラッシュします
asmコードの使用:-
.386
.model flat, c
TEXT SEGMENT
ALIGN 4
L_add PROC
push ebp
mov ebp, esp
mov edx, dword ptr[ebp + 12]
mov eax, dword ptr[ebp + 8]
add edx, eax
mov esp, ebp
pop ebp
ret 0
L_add ENDP
TEXT ENDS
END**
上記のコードはVisualStudio2010では機能しません。セグメントTEXT SEGMENT
として変更すると正常に機能しますが、上記のコードと .code
の違いはVisualStudio2005で機能します。.code
TEXT SEGMENT
disaasembly at calling place:
b = hs_L_shl(L_var1,var2);
012D1484 movsx eax,word ptr [var2]
012D1488 push eax
012D1489 mov ecx,dword ptr [L_var1]
012D148C push ecx
012D148D call @ILT+455(_hs_L_shl) (12D11CCh)
012D1492 add esp,8
012D1495 mov dword ptr [b],eax
Disaasembly at function with .code:
hs_L_shl PROC
; PROLOGUE START
push ebp
012D15B0 push ebp
mov ebp, esp
012D15B1 mov ebp,esp
sub esp, 24
012D15B3 sub esp,18h
push ebx
012D15B6 push ebx
push esi
012D15B7 push esi
Disaasembly at function with TEXT SEGMENT:
; PROLOGUE START
push ebp
012D15B0 push ebp
mov ebp, esp
012D15B1 mov ebp,esp
sub esp, 24
012D15B3 sub esp,18h
push ebx
012D15B6 push ebx
push esi
012D15B7 push esi