0

アセンブリのリンクに問題があります。アセンブリにNASMを使用し、それをldとリンクします。マイナーな問題の1つは、GLOBALディレクティブが機能するのは、.dataセクションを定義した場合のみであるということです。(coffを使用することにしました。これは、-cオプションを指定してg ++から出力されたものと最も類似した形式であったためです)。主な問題は、リンクした後でも、呼び出しが何らかのアドレスにつながり、関数がそこにないことです。あなたの時間を読んでくれてありがとう、そしてあなたがいくつかのアドバイスや多分キーワードを持っていたら、私はリンクとシンボルについて何かを得るためにグーグルするべきです、それは完全に素晴らしいでしょう。

4

1 に答える 1

1

私はWindowsでnasmを使用していませんが、の出力を見ると、ではなくフォーマットnasm -hfが必要だと思います。COFF形式は古いオブジェクトファイル形式であり、現在Windowsで使用されているPE-COFF(または単に「PE」)形式は新しいバージョンです。win32coff

GLOBALディレクティブが有効になる前にSECTIONを指定する必要がある理由については、その動作は見られません。ラベルの前にグローバルを宣言していなかった可能性はありますか?または、シンボルが発行されている可能性がありますが、たとえばデータ変数として意図されていたが、.textセクションにスペースが割り当てられている場合、正しいリンケージを提供できませんでした。

于 2010-09-12T11:41:41.503 に答える