問題タブ [inline-assembly]
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.
c# - C#のx86 / x64 CPUID
他の質問に関連して、 「不明なモジュールでタイプ「System.AccessViolationException」の未処理の例外が発生しました。追加情報:保護されたメモリの読み取りまたは書き込みを試みました。これは、他のメモリが破損していることを示していることがよくあります。」のデバッグにご協力ください。コードをステップスルーすると、del()が実際に呼び出されるまですべてが機能し、その行で失敗します。
このコードは、この記事のサンプルとPythonで動作するこのPythonコードに基づいています。コード例をそのまま使用することもできませんが(同じ例外)、少し古くなっているか何かであると期待しています。
編集:私たちがここにたどり着いた方法に関心がある場合は、編集履歴を参照してください。これは興味深いことではありません。
完成した作業バージョン:
CPUID0は正しい順序で読み取る必要があることに注意してください。
c++ - アセンブリと C++ で関数を 2 回呼び出す
呼び出される関数を新しい関数に変更するコードがありますが、新しい関数だけを呼び出すのではなく、古い関数も呼び出したいです。これは例なので、私の言っていることが理解できます。
.exe を逆アセンブルすると、次の部分が表示されます。
(0x123はその行のアドレスです)したがって、次のコードを使用しました:
今、SUB_L00999999 を呼び出す代わりに、MyNewFunction を呼び出します...
だから...どうすれば古い関数を呼び出すことができるかについてのアイデアはありますか?
私はこのようなことを(多くの方法で)試しましたが、アプリケーションがクラッシュします:
注: 私は Visual Studio C++ 2010 を使用しており、これらのコードは .exe にロードされた .dll にあります。
ありがとう。
c - Linux での C インライン アセンブリ、スタックから stdout への文字列の書き込み
スタックから stdout に文字列 (例: "Hello") を書き込むにはどうすればよいですか? つまり、データセグメントなしです。
前もって感謝します
c++ - C++ でのアセンブリ
次のコードがあります。
私はアセンブリをよく知っていますが、プログラムが画面に 2 を出力しないのはなぜですか?
c++ - 組み込みアセンブラでのコンパイルエラー
このコードがなぜかわかりません
は次のエラーを示しています。
1> c:\ users \ david \ document \ visual studio 2010 \ projects \ assembler_instructions \ assembler_instructions.cpp(11):エラーC2414:オペランドの数が不正です
すべてが正常に見えますが、なぜこのコンパイラエラーが発生するのですか?
gcc - インラインガスに関するドキュメント
Linux 0.01カーネルを読むとき、私が渡すインラインガスを投げますが、これはデコードするのが難しいです。
また
':'の間にあるものを解釈する方法がわかりません。
誰かがそれについてのドキュメントを手に入れましたか?
ありがとう
c - 'asm'、'__asm'、'__asm__'の違いは何ですか?
__asm { ... };
私が知る限り、との唯一の違い__asm__("...");
は、最初の使用mov eax, var
と2番目の使用movl %0, %%eax
が:"=r" (var)
最後にあることです。他にどのような違いがありますか?そして、どうasm
ですか?
c++ - インライン アセンブラを .asm ファイルに変換する方法
インライン アセンブラ関数を .asm ファイルに変換する際に問題が発生しています。x64 アーキテクチャではインライン アセンブリがサポートされていないため、別のインライン アセンブラ コードが必要です。ここにコードがあります、
私のcppファイルに変換してリンクする方法はありますか? 今からありがとう。
THK
c++ - ヒープ ベースのデータを使用してスタック オブジェクトを引数として受け取る関数を呼び出す
立ち往生していて、これを解決する方法がまったく見つからないため、解決すべき複雑な問題があります。これがコードです
ここでfoo
は、 がスタック上のオブジェクトを操作しており、呼び出されたときにスタック オブジェクトがマップされることを期待していることがわかりますfoo
。しかし、残念ながら、MyStruct
コンパイル時にタイプがわからないため、メモリのブロックを作成する必要があり、実行時にそのブロック内にデータが入力され、foo
上記のように asm で呼び出されたときに渡されます。
ヒープ void ポインターをスタック型オブジェクトに変換するにはどうすればよいですか。どういうわけか のa_myStruct
引数のアドレスを取得すると、その場所foo
を指すことができますが、型のオブジェクトに変換されるようにvoid*
逆参照することはできません。void*
MyStruct
問題を解決する他の方法はありますか?C++ と同様に、実行時に型を決定することもできます。
C++ で実行時に関数を呼び出す際に問題があり、コンパイル時に不明なユーザー定義型が完全に署名されている可能性があります。またはDIA SDKから)。しかし、主な問題は、実行時にこれらの関数を呼び出したいということです。コンパイル時に、関数のアドレスと、その関数シグネチャの引数として参加しているオブジェクトまたはポインターのユーザー定義型の詳細を取得します。実行時にその関数を呼び出したい場合は、最初にヒープに一時ブロックを作成し、そのブロックにデータを入力して、実行時にその型を設定する必要があります。その型のすべての詳細があります。
ここでの問題は、関数が引数をその型のポインターとして使用できるかどうか、またはその引数が正確にその型のスタックオブジェクトであるかどうかがわからないことです。その型へのポインタがあれば問題ありませんが、そこにオブジェクトがある場合、実行時にその関数を呼び出すのに大きな問題があります。
c++ - GCCインラインアセンブリ:dwordptrを呼び出す
Windows VC ++に次のコードがある場合:
AT&T構文を使用して、GCCインラインアセンブリで同じことを行うにはどうすればよいですか?
このようなことを試しましたが、「ジャンク」エラーが発生します...
そして、いくつかのレジスタに渡して、それを、などに変換しようとしましたが、somevar
動作させることができませんでした。dword
ptr
更新:その場合、角かっこではなく括弧を使用する必要があるように見えるなど、便利なものを見つけました。また、lcall
と呼ぶものを見つけましたfar
。でも、どうやって再現できるのか、まだわかりませんdword ptr
。