問題タブ [basm]
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.
delphi - ASMを使用したオブジェクトメソッドの呼び出し-パート2
この質問は前の質問に基づいていますが、それは参考までにです。
私はそれをうまく動かすことができました、しかし私は私にははっきりしない何かを見つけました、それで誰かが次の振る舞いを説明することができればそれは素晴らしいでしょう。
私は次のクラスを持っています:
および次の2つの手順:
動作バージョンをテストするには、以下を呼び出す必要があります。
動作しないバージョンをテストするには、次のようにします。
そして最後に質問:CallObjMethWorkingが機能しているのに、なぜCallObjMethNOTWorkingが機能していないのですか?コンパイラがTMethodをどのように扱うかには何か特別なことがあると思いますが...アセンブリの知識が限られているため、理解できません。
誰かが私にこれを説明してくれれば幸いです、ありがとう!
delphi - インテル® アドバンスト・ベクトル・エクステンションの可用性を調べる方法は?
Delphi 2007 を使用して、ボックスが AVX 対応であることを確認するにはどうすればよいですか。
私の質問は、CPU でのサポートの問い合わせに限定されています(OS は OK / Windows 7 SP1 であると仮定しています)。
Chris Lomont によるIntel® Advanced Vector Extensions の紹介というタイトルの PDF ドキュメントでは、その方法を説明し、コードの実装例を C++ で提供しています。
このページからも入手できます。
delphi - この Delphi 関数を SSE2 で最適化するにはどうすればよいですか?
SSE2 アセンブリ (32 ビット) を使用してこの Delphi 関数を実装する方法のヒントが必要です。他の最適化も大歓迎です。たぶん、どのような種類の命令を使用できるかを教えてくれるので、さらに読むための出発点があります.
実際:
期待される:
delphi - Delphi アセンブリ呼び出し
私はIDAでいくつかのDelphiアセンブリで遊んでいます。
また、理解できないシステム コールが多数あることに気付き、それらに関するドキュメントを見つけることができませんでした。例: 不明な関数 LStrClr(void *) への呼び出しが多数あることに気付きました。
私が見つけることができた最高のものは、このサイトhttp://www.delphibasics.co.uk/ByLetter.asp?Letter=Aでし たが、LStrClr を含む多くの関数呼び出しが不足しています。
Michael Engstler さん、返信ありがとうございます。
delphi - Delphiインラインアセンブラを使用してクラスインスタンスを作成する
私がやりたいのは、アセンブリを使用して、クラスインスタンスを作成し、そのメソッドの1つを呼び出してから、インスタンスを解放することです。
非常に重要でおそらく非常に単純なものが欠けていることは知っていますが、何がわからないのです。
参考:これを低レベルで達成する方法を理解したいのですが、別の方法ではありません。
更新:
Andreas Rejbrandのおかげで、私は何とか犯人を見つけることができました:
Update2:
PUSH /POPEAXではなくEBXを使用して欠陥を見つけてくれたArnaudに感謝します
delphi - Delphi / ASMコードは64ビットと互換性がありませんか?
OpenGLのサンプルソースコードがいくつかあり、64ビットバージョンをコンパイルしたかったのですが(Delphi XE2を使用)、コンパイルに失敗するASMコードがいくつかあり、ASMについては何も知りません。以下のコードは、失敗した行に2つのエラーメッセージを表示します...
delphi - Delphi XE/ XE2 64 ビットの POPCNT
Delphi XE または XE2 で、非常に高速な Intel POPCNT 命令を使用して 16/32/64 ビット ワード内に 1 ビットのカウントを実装するにはどうすればよいですか? この命令に直接アクセスできるライブラリ ルーチンはありますか? 誰かがその使用法を示すデモ asm セクションを書いてくれませんか? 最後に、64 ビット Delphi のオプションは何ですか (asm は使用できません)。よろしくお願いします
delphi - Delphi アセンブラー/RTTI 専門家: 関数内の暗黙の Result 変数のメモリ アドレスと型情報を取得できますか?
メソッド トレース用の次の典型的なコードを考えてみましょう (説明のために簡略化しています)。
これは意図したとおりに機能しています。出力は次のとおりです。
F1に入る
何かをしている...
F1を去る - 結果= Booyah!
への呼び出しに必要なパラメーターの数を最小限に抑える方法を探しています。理想的には、-関連の引数を完全TraceMethod()
にスキップできるようにします。Result
私はアセンブラやスタックレイアウトの経験はありませんが、間違っていなければ、他の人が見た「魔法」から判断すると、少なくとも暗黙の魔法のメモリアドレスResult
-変数は何らかの方法で取得できるはずです。 ? そして、そこから型情報を取得することもできますか?
もちろん、引数をTraceMethod
完全に渡す必要がなくなる「周囲の」関数自体の名前を特定することさえできれば...
Delphi XE2 を使用しているため、最近導入されたすべての言語/フレームワーク機能を使用できます。
そして、誰かが言及する前に: 私の実際のコードは既に-callsの代わりにCodeSite.EnterMethod
/を使用しています。また、この単純化された例は複雑な型を処理できず、エラー処理をまったく実行しないことも認識しています。ExitMethod
Writeln
delphi - コンパイル時に既知のアセンブリ命令のマシン コードを取得するにはどうすればよいですか?
ASM の 1 行をシェルコードに変換できるようにしたいと考えています。いいえ:
これを行うにはどうすればよいですか。また、このシェルコードを適切に変換して、Delphi アプリケーションの変数に格納できるようにするにはどうすればよいですか。いいえ:
arrays - アセンブラ配列の最大要素検索
最大配列要素を検索するには、Delphiでasm関数を作成する必要があります。だから私が書いたワット。ここでいくつかのprolbemを手に入れました。
まずmov ecx, len
、ここでは正しく機能しません。実際には、の値は置き換えられますが、 !ECX
の値は置き換えられません。len
そして、例を挙げればmov ecx, 5
、ecxに5が表示されます。
2番目-この関数を5つの要素の配列でテストします(mov ecx, 5
ofcを使用)。奇妙な結果が返されます。このように配列0の要素を読み込もうとしたときに、私が何かをしているせいかもしれません。
でもこんな風に読めば
操作が無効だと書いてありますので、こうやってみたら
サイズが一致しないということです。
どうすればこの問題を解決できますか?ここに完全なコード: