calling-convention

    3

    4答えて

    ウィキによると: 異なるプログラミング言語が異なる呼び出し規約を使用し、 そうすることができ、異なるプラットフォーム(CPUアーキテクチャ+オペレーティングシステム)。だから私は、私はPythonで(.soは/ .dllファイルからエクスポートされた)C/C++関数を呼び出す際には注意することになっています 複数の言語 で書かれたモジュールを組み合わせると、この は時々問題を引き起こすことができま

    3

    1答えて

    好奇心をそそらない:値の型は一般的にコピーされ、JITコンパイラはメソッドを呼び出すときにMicrosoftのFastcall呼び出し規約を使用しているようです。これにより、最初のいくつかの引数がレジスタに格納され、高速アクセスが可能になります。しかし、呼び出される関数に渡される大きな値の型(つまり、レジスタのサイズやスタックの幅よりも大きい)はどのようにして得られますか? CLRのJITコンパイ

    4

    3答えて

    私は、C関数から呼び出され、引数をとるアセンブリルーチンをいくつか持っています。今、私はそれらの引数がcdeclの順番でスタックに渡されると仮定しています。それは正当な前提ですか? コンパイラ(GCC)がこれを検出し、引数が正しく渡されていることを確認しますか、手動で移動してcdeclを宣言する必要がありますか?その場合、より高い最適化レベルを指定すると、その属性は保持されますか?

    2

    1答えて

    OpenCVライブラリ、Boostライブラリ、およびこのLINKからダウンロードしたコードのコードを使用してアプリケーションを作成しています。私はThunk32と同じソリューションの下にプロジェクトを作成していると私は、次のファイルがあります。 MainProject.cpp #include "stdafx.h" int main(int argc, char** argv) {

    3

    2答えて

    前に期待される初期化子は私がcdecl呼び出し規約に問題がある: void Test1(char* str, ...) // ok {} void cdecl Test2(char* str, ...) // error: expected initializer before 'Test2' {} int main() {} は、私は、コンパイラがcdecl呼び出し規約を

    1

    2答えて

    私は最近custm CALLBACKの関数ポインタに問題があり、問題を一時的に解決する呼び出し規約を使用するようになった。funy CALLBACKはうまくいったが、呼び出し関数のシグネチャはまだ間違っていた!!そのBUGを見つけるのに多くの時間を費やしました。 がcaling規則はあなたが時々OKではない何かに何かをやらせることに気づいた...今までだ OKは...今、私は、呼び出し規約について

    6

    1答えて

    YMMレジスタが呼び出し元と呼び出し先によってどのように処理されるかを定義する文書は見つかりませんでした。 は私の質問を集中するために、ここで私が知りたいのですが何である:YMMレジスタは、呼び出し元に戻る前に呼び出し先によって復元されなければならない ? LinuxとWindowsではXMMレジスタに違いがあるので、YMMレジスタも同じルールに従わないと仮定します。それぞれのOSのルールは何です

    0

    1答えて

    私はBOOSTを使用して、関数の呼び出し規約を取得しようとしています。これを行うには、同じ問題を投稿した個人と同様のアプローチをとっています。 相続人は彼らの問題へのリンク:function calling convention with boost::function_types 私は同様のアプローチを使用して呼び出し規約を取得しようとしてきたが、「cdecl_cc」が定義されていないことを訴え

    1

    1答えて

    HexRaysを使用して生成されたこのコードを持っていますが、__thiscallはVC++ 6.0では使用できないようです。私はVC++ 6.0でこの問題を回避するにはどうすればよい nonstandard extension used : '__thiscall' keyword reserved for future use ? long v4 = 0x004AC370; #define

    1

    2答えて

    私はMS Visual Studio(2005、ただし重要ではない)を使用しています。 double f(double x) { __asm{ ...body code... } } アセンブリコードがST0に含ま返される結果で終了: Iは、その本体(必ずしも)実装されているインラインアセンブリに機能を有します。 使用されている呼び出し規約は__cdeclなので、ST0では戻り値