-3

私はGCCでこれを試しました:

#include <iostream>
using namespace std;
int main()
{
asm("mov $0x7, %al");
}

そして、これが出力されるものです:

終了: ExitFailure 7

だから私は代わりにこれを試しました:

#include <iostream>
    using namespace std;
    int main()
    {
    asm("mov $0xcf, %eax";);
    }

そして、このエラーを取得します:

エラー: ';' の前に ')' が必要です トークン。

この男のアドバイスを試してみましたが、うまくいきません。このチュートリアルでは、そうではありません。

以下に示すように、チュートリアルに示されているとおりに正確に実行しました。

#include <iostream>
int main()
{
asm("movl $10, %eax");
}

そして、このエラーを取得します:

終了: ExitFailure 10

「ExitFailure」は正確には何を意味し、オペランドの値に対応するのはなぜですか? 基本的に、ここで何が起こっているのですか?それは私の側またはコンパイルで間違っていますか?

PS: これはエラー ログです。プログラムが正常にコンパイルされません。

4

3 に答える 3

4

あなたのプログラムは問題なくコンパイルされ、実行されています - たまたま と に値710入れているだけeaxで、関数の戻り値はそれぞれ7または10になります - その動作は ABI に依存します。

于 2013-11-14T22:10:18.127 に答える
2

メイン関数に戻り値、追加、return 0;または戻りたいものがありません。

于 2013-11-14T22:10:22.873 に答える