問題タブ [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.
assembly - IRQ マッピングの設定
カーネルをセットアップするために、いくつかのチュートリアルとリファレンスに従っています。チュートリアルで、まったく説明していないなじみのないコードに出くわしました。16 IRQs (0-15)
ISRの場所にマップすると言われているのはコードです32-47
:
のコードoutportb()
は次のとおりですが、私はすでにそれが何をしているのかを明確に把握しています:
これは保護モードの x86 アーキテクチャ上にあることに注意してください。このソース コードは正常に動作し、その機能は理解できますが、どのように機能するかはわかりません。誰かがここで何が起こっているのか説明してもらえますか?
gcc - gcc を使用して x64 コンピューターで x86 アセンブリ コードをコンパイルするにはどうすればよいですか?
学校の課題では、x86 アセンブリ コードを作成する必要がありますが、私のコンピューターは x64 マシンであり、gcc は x86 コードのみを想定しているため、gcc を使用してコンパイルすることはできません。gccにx86アセンブリコードを受け入れさせるコマンドはありますか? ありがとう
PS x86マシンで問題なくコンパイルされるため、コードが有効であることはわかっています。
assembly - 1 ARM 命令で上位 16 ビットをクリアする
ARM アセンブリでは、即値は 8 ビットのローテーションされた値によってエンコードされます。つまり、エンコードできるのは
今私の問題は、r0 の上位 16 ビットをクリアし、それを格納されたハーフワード r1 に置き換えたいということです。しかし、私がしなければならない即時の範囲が限られているため: -
2 つの bic 命令を 1 つの命令に置き換えることは可能ですか? 0xffff0000 はエンコードできません。おそらく、別の論理演算を使用して上位 16 ビットをクリアする必要がありますか?
ありがとう
編集:申し訳ありませんが、r1 の上位 16 ビットが空であることを忘れていました。ARM7TDMI を使用しています。
assembly - IA-32 のアセンブリでの変数の初期化
MASM のアセンブリでの変数の初期化について質問があります。
2^32 を変数に初期化する方法と、初期化する必要がある変数の種類を教えてください。DWORD または REAL4?
私はそれを次のようにしようとします:
var をレジスタに割り当てて (mov eax,val など)、値を書き込もうとすると、2^32 ではない値が表示されます。REAL4型でもやってみました。結果はまだ同じです。
ここで私が間違っていることは何ですか?
前もって感謝します...
assembly - アセンブリ アプリケーションでのメモリの変更
「x86アセンブリの芸術」という本からアセンブリ言語を勉強していますが、答えがわからない質問があります。
プログラムは次のようになります。
この演習では、メモリ内の値を調べて操作するプログラムの実行を開始します。次に、メモリ画面に切り替えて、メモリ内の値を変更します (つまり、プログラムの実行中にメモリに直接アクセスします)。
プログラムはメモリ位置 1000h を 0 に設定することから始まり、2 つの条件のいずれかが満たされるまでループします - ユーザーが FFF0 スイッチをトグルするか、ユーザーがメモリ位置 1000h の値を変更します。FFF0 スイッチを切り替えると、プログラムが終了します。
メモリ位置 1000h の値を変更すると、n ワードを加算するプログラムのセクションに制御が移ります。ここで、n はメモリ位置 1000h の新しい値です。」
これらの値を合計した後、「put」を使用して合計を出力します
私はこのコードを持っています:
問題は、値 12h を 1000h に置くと、プログラムが 2 つの値、合計、および数値 1 を出力することです。
プログラムをステップ実行すると、1 つの値 (合計) が出力されますが、実行すると 2 つの値 (合計と数値 1) が出力されます。
誰かがこの動作を説明できますか?
data-structures - アセンブラのデータ構造用の優れたライブラリ/ライブラリ
Assembler の x86 (またはその他) の標準データ構造 (リンク リスト、配列リスト、キュー、スタックなど) 用の適切なライブラリ (できればコメント付きのソースを含む) はありますか? 私は車輪を再発明する(そしてデバッグする!)のが好きではありません....
python - x86asm/x64asmからpython2.5関数を呼び出す方法は?
アセンブリ コードからインターフェイスする必要がある python 関数がいくつかあります。Python コードとのやり取りはあまり長くないので、ソリューションが完全なソリューションである必要はありません。とにかく、私はそれを少し噛んだ:
- Pythonオブジェクトはメモリ内でどのように見えますか?
- Python 関数を呼び出すにはどうすればよいですか?
- ctypesインターフェイスのpythonオブジェクトとしてpythonオブジェクトを渡すにはどうすればよいですか?
- ctypes インターフェースは、別の方法で作業を容易にすることができますか?
macos - PPCブレークポイント
ブレークポイントはPPCにどのように実装されていますか(具体的には、OS Xの場合)?
たとえば、x86では通常INT 3命令(0xCC)で実行されます-ppcのこれに匹敵する命令はありますか?または、それらを設定/実装する他の方法はありますか?
c - C 命令あたりの asm 命令の数は?
この質問に完全に答えることは不可能であることは承知していますが、大まかな数値を求めているだけです。
妥当なサイズの C プログラム (数千行のコード) が与えられた場合、平均して生成される ASM 命令の数。言い換えれば、現実的な C と ASM の命令比率はどれくらいでしょうか? 「現在の x86 アーキテクチャで」など、自由に仮定してください。
これについてGoogleで調べてみましたが、何も見つかりませんでした。
補遺: この質問がどれほどの混乱を招いたかに気づき、説明が必要だと感じました。ヘルツあたりのスループットが、アーキテクチャ、ハードウェア、キャッシュ、バス速度、および月の位置によって大きく異なることは十分承知しています。
私は正確で科学的な答えを求めているのではなく、むしろ、計り知れないスケールに入れることができる経験的な答えを求めています.
これは場所に対する簡単な答えではありません (私が気づいたように)、これは私の最善の努力でした。C の行ごとに結果として得られる ASM の行の量は、何をしているかによって異なることを私は知っています。i++
と同じ近隣にありませんsqrt(23.1)
- 私はこれを知っています。さらに、C から取得した ASM に関係なく、ASM はプロセッサ内のさまざまなマイクロコードのセットに解釈されます。これは、AMD、Intel、またはその他のものを実行しているかどうか、およびそれぞれの世代によって異なります。これも承知しております。
私がこれまでに得た大まかな答えは、私が求めていたものです。ANSI-C の 1 行あたり x86 ASM の平均で約 2 行の十分な規模のプロジェクトです。今日のプロセッサは、パイプラインがいっぱいになり、十分な大きさのサンプルが与えられると、平均してクロック サイクルあたり約 1 つの ASM コマンドになるでしょう。
optimization - 8051 アセンブリ言語でメモリを最適化するには、どのような手法を使用できますか?
新しいコード用のスペースを確保するために、コードを最適化する必要があります。すべての変更のためのスペースがありません。コードバンク切り替え(80c31 with 64k)が使えません。