2

Linux(fedora 9)で記述されたCコードをアセンブリx86コードに変換しようとしましたが、Math.h関数に問題があります。ceil、floor、log、log10、powなどのこのライブラリの関数は、アセンブリx86では定義されていません。この問題を解決するのを手伝ってくれませんか。

ありがとう。

4

2 に答える 2

3

ADDほとんどのライブラリ関数は、少なくとも命令に直接マッピングする加算演算子の意味では、アセンブリ言語で定義されません。アセンブリでライブラリを書き直したい場合は、プロセッサが利用できる機能を使用して関数を実装する必要があります。ほとんどのライブラリ関数には、単一の操作だけでなく、個別のアセンブリ言語サブルーチンが必要です。これに取り組む最も簡単な方法は、個々のライブラリサブルーチンを分離して動作させ、それらをより大きなプログラムに組み込むことです。

Cコードをコンパイルして、分解された出力を調べることはできますが、人間が出力を理解しにくくする可能性のあるコンパイラーの最適化に注意してください。

このタスクの背後にある目的は何ですか?コンパイラは本質的にCからアセンブリ言語への翻訳者であるため、これを手動で行う必要はめったにありません。これは宿題ですか?

于 2012-05-26T00:00:21.380 に答える
2

これらの関数が何をするかを知る最良の方法は、glibcのソースでのそれらの実装を調べることです。それはあなたに十分な洞察を与えるはずです。もう1つの方法は、/ usr /lib/にあるlm.soの分解を確認することです。

于 2012-05-25T22:39:26.373 に答える