どのように動作するかを学ぶためにいくつかのアセンブリ コードを試していますが、最初の例ではバッファ オーバーラン例外に直面しました。私はVS2013エクスプレスエディションを使用しており、extern "C"機能を使用してアセンブリコードを機能させるためにc++コードを使用しています。いくつかの VS オプションを変更しようとしましたが、うまくいきませんでした。それは非常に単純なステートメントですが、バッファオーバーランの例外を与える理由は何でしょうか。通常、movステートメントなしでビルドして実行します。
編集:マクロに ret ステートメントを追加するだけで、問題は解決しました。
これは組み立て部分です:
.586
.model flat,c
.data
.code
doit proc
mov eax, 8
doit endp
end
ここにC++の部分があります:
extern "C" void doit();
void main()
{
doit();
}