問題タブ [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 - Delphi + アセンブリ配列へのアクセス
アセンブリ(デルファイ)で配列の要素にアクセスするのに問題があります。
コードは次のとおりです。
何が間違っている可能性がありますか?
ありがとう!
delphi - Delphi 読み取りオーバーフロー フラグ
私がこれをしたら
加算がオーバーフローしたため、c は 0 になります。このオーバーフローしたブール値をキャッチする最良の方法は何ですか? (a+b<a) or (a+b<b)
? 本当に良い方法はインラインアセンブラを使用することですが、私はアセンブラでそれほど多作ではありません(私の推測では、次のようなものが含まれると思いますがJO
)
delphi - Delphi でアセンブリを使用するための良いリソース?
質問
Delphi でアセンブリを使用する方法を学習するためのリソースはありますか?
背景情報
一般的なアセンブリと命令セットのリファレンス (x86、MMX、SSE など) を見つけて読みました。しかし、その情報を Delphi に適用するのは難しいと感じています。クラスプロパティの値を取得する方法などの一般的なこと。
コードを最適化するときにアセンブリを使用するオプションが必要です。
理解します:
- コンパイラに勝つのは難しいでしょう。
- 高レベルの最適化手法は、低レベルのアセンブリ最適化よりも数桁もパフォーマンスを向上させる可能性が高くなります。(異なるアルゴリズムの選択、キャッシュなど)
- プロファイリングは不可欠です。実際のパフォーマンス分析にはSampling Profilerを使用し、低レベルの詳細には CPU サイクル カウントを使用しています。
次の理由から、Delphi でアセンブリを使用する方法を学ぶことに興味があります。
- ツールボックスに別のツールを入れても問題ありません。
- コンパイラが生成したアセンブリ出力を理解するのに役立ちます。
- コンパイラが何をしているかを理解することは、より良いパフォーマンスの Pascal コードを書くのに役立つかもしれません。
- 私は興味がある。
delphi - Delphi XE2 64ビット:GraphicExのインラインasm
これは、asmから純粋なdelphiにどのようになりますか?GraphicExを必要とするコンポーネントをコンパイルできません。JPGユニットで、インラインアセンブリが64ビットでサポートされていないというエラーが発生します。
delphi - DelphiスタイルのASMを英語に翻訳しますか?
私が継承した最近のDelphiプロジェクトには、ASMにプロシージャがあります。私は完全なASM初心者なので、理解できません。プロシージャフローを解読するためにさまざまなASM命令を読みましたが、それでもわかりません。
ASMの経験がある人が私の理解を助け、次の手順を英語に翻訳できますか(その後、Delphiに翻訳し直して、コードが将来読みやすくなります!!!)
Mem1の宣言は、バイトの配列[0..15]です。。そして、Mem2はLongIntです。
手順は次のとおりです。
編集:Roman Rのおかげで、ASMをDelphiに戻しました
delphi - アセンブリのbasmへの変換
CrapWOW Hash をhttp://www.team5150.com/~andrew/noncryptohashzoo/CrapWow.htmlから delphi または basm に変換しようとしています。私のasmスキルは非常に限られていますが、それほど難しくないと思いました...
とにかく、asm変換に関するいくつかのWebページの助けを借りて、私はこれにたどり着きましたが、うまくいきません...特に、最後の部分では、変換方法がわかりません。これは、パラメーターと戻りパラメーターへのレジスターの割り当てですか?
これについて少しでもお役に立てれば幸いです。
騎士キラー
delphi - Delphi XE2で絶対アドレスからデータを読み取る方法
64ビットモードで絶対アドレスから読み取りたいとしましょうgs:$30
.asmコードは次のようになります:
...そしてコンパイラはこのコードを...に変換します
しかし、私は相対アドレスを使いたくありません(rip + $30)
。コンパイラで絶対アドレスを使用して、次のようにコンパイルする必要があります。
gs:
(接頭辞を付けても付けなくても同じです!)
どうすればいいですか?
編集:
私は回避策を知っています。場所を相対ではなく絶対としてアドレス指定するようにコンパイラに指示するコマンドが存在するかどうかを尋ねます。
編集
ここまでは順調ですね... :)
drhirsch がコマンドを見つけるのを手伝ってくれたので、コンパイラは次のように翻訳します。
これに:
これはほとんど問題ありません:)長い64ビットオペコードよりも短い32ビットオペコード(上のオペコードを見てください)が欲しいからです。
長い代わりに短い 32 ビット アドレス オペコードを使用するようにコンパイラに指示する方法はありますか?
delphi - Delphi XE2 アセンブリ
Delphi 2006 で動作する次の関数がありますが、Delphi XE2 では、処理時にアクセス違反エラーまたは特権命令エラーが発生しますRET
。
組み立てがよくわかりません。何が問題ですか?
delphi - ASMを使用してオブジェクトメソッドを呼び出す
私が達成しようとしていることをよりよく説明するために、私はうまくいくものから始めます。
別のプロシージャを呼び出して文字列パラメータを渡すことができるプロシージャがあるとします。
これは、私たちが呼び出す手順です。
これで、 SaySomethingをso(テスト済みで動作(:))のように呼び出すことができます。
私の質問は、どうすれば同様の機能を実現できるかということですが、今回はSaySomethingをメソッドにする必要があります。
だから、あなたがまだ私と一緒にいるなら...、私の目標は次のような手順に到達することです:
かなりの数のショットを出しましたが、組み立ての知識は限られています。