問題タブ [calling-convention]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - stdcall は可変引数を持つことができますか?
私の知る限り、可変引数を使用できるのは caller-clean-stack 規則だけです。
ちなみに、WinApi StringCchPrintfW はこのように宣言されています。 (SAL は削除しました)
__inline HRESULT __stdcall
StringCchPrintfW(
STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat, ...
);
stdcall にも可変引数を指定できますか?
c - printf: 破損した結果を説明する方法
与えます (Linux、gcc、x64)
実際、g++ でコンパイルすると、2 番目の 0 の代わりにランダムな結果が得られます。
に無効な指定子を指定したことprintf
、およびそれがトリガーされることを理解しています不特定long long
未定義の動作ですが、とdouble
が同じサイズであるため、なぜこの特定の破損が発生するのか疑問に思います。
c++ - 複雑な戻り値を返す方法は?
現在、私はいくつかのアセンブリ言語の手順を書いています。慣例にあるように、呼び出し元に整数などの値を返したい場合は、EAXレジスタに返す必要があります。ここで、float、double、enum、または複雑な構造体を返したい場合はどうすればよいのでしょうか。これらのタイプの値を返す方法は?
メモリ内の実際の値を指すEAX内のアドレスを返すことを考えることができます。しかし、それは標準的な方法ですか?
どうもありがとう~~~
calling-convention - WindowsでのPEバイナリファイルの呼び出し規約を調査するにはどうすればよいですか?
呼び出し規約が_cdeclか_stdcallか、それともそうでないかを示すツールはありますか?
linux - x86-64 関数のプリアンブルを理解できない
クラッシュが発生しました。調査中に、次のコードによって完全にブロックされていることがわかりました。
これはobjdump --disassemble /usr/lib64/libc.a
、64 ビット Linux x86 システムで実行し、出力を検索することによって生成されます。これはAT&T の構文なので、宛先は右側にあります。
具体的には、最後の指示がわかりません。rdx
関数がそのレジスタに触れる前に、レジスタの値をスタックのどこか(遠く、遠く)にメモリに書き込んでいるようです。私には、これは意味がありません。
私は呼び出し規約を読んでみましたが、私の最良の理論はrdx
、パラメーターに使用されているため、コードは基本的にパラメーター値を直接「返す」ことです。これは関数の終わりではないので、もちろん実際には戻りません。
c# - 自動通話機能 (Dialer + IVR + Text to Speech)
VOIP を使用して自動通話機能を使用する必要があるシナリオがあります (図式的に)。
ダイヤルのプロセスを自動化し、システムを介して応答を取得するシステムまたはダイヤラが必要です。指定された番号に自動的にダイヤルでき (エージェントとのやり取りはありません)、ダイヤルの処理後に情報を提供できるツールが必要です。
エージェントとのやり取りは必要ありません。オンラインで注文を処理するアプリケーションを開発することになっています。テキスト読み上げプロセスによる販売者との確認が必要です。つまり、顧客がオンラインで注文すると、システムがチェックします。再販業者からの注文が利用可能かどうかを確認し、顧客に応答します。
c - 非標準の呼び出し規約をCでラップするにはどうすればよいですか?
詳細に立ち入ることなく、Cコードからの非標準の呼び出し規約を利用する必要があるとしましょう。この規則を使用する関数は、スタック上で複数の値を返す場合があります。インラインアセンブリを使用して呼び出しを行うラッパーに各関数を配置し、ラッパーに指定されたポインターパラメーターを介して出力を送信するのは簡単です。残念ながら、このソリューションは一般化されていないため、一般的なケースで機能するものが必要です。ただあきらめてマクロを使用してラッピングをカプセル化する必要がありinvoke
ますか、それとも、スタックを管理するという汚い作業を処理する可変個引数関数を作成するためのより一般的な方法がありますか?
perl - 他の人のPerlAPIを使用するときに$_を使用しないようにするのは慣例ですか?
他の誰かのAPIをデフォルトの変数$_と組み合わせて使用しているときに、私は捕まりました。
このための出力は次のとおりです。
$ _に依存する代わりに、独自のループ変数を指定すると、問題が修正されます。
他の誰かが書いたAPIと組み合わせて$_を使用することで、私は単純なだけですか?それとも、これはそのAPIモジュールのバグですか?
c++ - ESPの値が正しく保存されませんでした
上の画像から、関数setAttributeが呼び出しから戻っ たときにエラーが発生していることがわかります。
写真に示されているこのエラーを解決する方法を知っている人はいますか?呼び出し規約間のエラーであることは知っていますが、setAttributeの呼び出し規約を確認するにはどうすればよいですか?
c++ - コールバック関数と通常の関数の違いは何ですか?
さて、関数の使用例CALLBACK
と通常の関数の2つの例を示します。
注:これらの例は作成していません。
通常の機能
_stdcallを使用した関数
違いはなんですか?
注:呼び出し規約がどのように機能するかはわかりません。例が役立ちます。