-1

どのように動作するかを学ぶためにいくつかのアセンブリ コードを試していますが、最初の例ではバッファ オーバーラン例外に直面しました。私は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();

}
4

1 に答える 1

-1

アセンブラ手続きにret文がないからです。したがって、プログラムの動作は未定義です.:)

于 2014-09-30T14:54:54.830 に答える