abi

    2

    2答えて

    私は、単純な関数をコンパイルして出力を見ることによってアセンブリを学ぼうとしています。 他のライブラリの関数を呼び出す方法を見ています。ここでは他の場所で定義された関数を呼び出すおもちゃのC関数があります: void give_me_a_ptr(void*); void foo() { give_me_a_ptr("foo"); } ここではgccによって生成されたアセンブリで

    2

    1答えて

    類似の質問が以前に投稿されていますが、私の特定の要件に関する回答が表示されませんでした。 私は共有ライブラリ(.so)にコンパイルされた基本クラスを持っています。このライブラリは使用されており、私のベースから派生したいくつかのクラスがあり、私のベースクラスの仮想関数を使用しています。 これで、内部的に使用される新しいメソッド(NON-VIRTUAL)を追加するために基本クラスを変更する必要がありま

    5

    1答えて

    GCCでABIを変更する前にgcc 4.8でコンパイルしたライブラリをダウンロードしました。 私のノートパソコン(最新のkubuntu)には、GCC 5.2があります。私はブーストをインストールしたときに、私が古いABIを使用してブーストをインストールするにはどうすればよい ....それは新しいABIを使用したが、その後、私は、次のリンクエラー 未定義シンボル.....__ cxx11を取得してい

    10

    2答えて

    x86_64 SysV ABIの関数呼び出し規約では、整数引数#4をrcxレジスタに渡すことを定義しています。一方、LinuxカーネルのシステムコールABIでは、同じ目的でr10が使用されています。他のすべての引数は、関数とシステムコールの両方に対して同じレジスタに渡されます。 これはいくつかの奇妙なことにつながります。 (同じ不一致が存在する)、例えば、X32プラットフォーム用のglibcでmm

    5

    2答えて

    私は、次の疑問があります。我々は、System Vのx86-64のABIはとてもレッドゾーンと呼ばれる、スタックフレームで固定サイズのエリア(128バイト)についての私達を与える知っているよう を。 その結果、たとえばsub rsp, 12を使用する必要はありません。ちょうどmov [rsp-12], Xとそれだけです。 しかし、私はそれの考えを把握することはできません。なぜそれは重要ですか?レッ

    0

    1答えて

    ウィキペディアには、.bssセクションにオブジェクトファイルの実際の領域がないことが記載されています。objdump情報では、実際には.bssのサイズが0のエントリが見つかりました。ですから、問題は、オブジェクトファイルに存在する空のセクションの必要性です。 .bssはばかり.relとして、むしろ.oとa.outファイルの両方で実行可能ファイルに追加されていることができないのはなぜ はオブジェクト

    1

    1答えて

    コード私はリンクライン上で-lcxaguardを継承しています。しかし、このライブラリは明らかにIntel 15 C++コンパイラには含まれていないので、ld: cannot find -lcxaguardというエラーが出ています。このライブラリとは何ですか?「cxa」は何を意味していますか?

    1

    2答えて

    だから、いくつかのビルドには含まれていますが、他のビルドには含まれていない.soがあります。 私のprebuildスクリプトは.soを削除します。関連付けられた.jarは、ライブラリをbuild.gradleから削除します。 ライブラリーはサードパーティ製のもので、x86またはarm-v7を要求することはありません。それは私の腕の中だけに提供されています。 ライブラリサポートなしでビルドすると、a