問題タブ [machine-language]
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 - x64 前方ジャンプの計算
前方にジャンプする命令がある場合、オフセット アドレスを計算する方法はありますか、それとも 2 番目のパススルーで絶対ジャンプを計算するだけですか?
このような:
このような場合、コンパイラは絶対ジャンプのみを使用しますか? このような単純なケースでオフセットを計算することは可能ですが、ジャンプやラベルが互いにネストされていることは言うまでもなく、ラベルが増えると指数関数的に高価になります...
assembly - ARM Cortex m0 で、最初の命令は何ですか?
私は、cortex m0 プロセッサの使い方を学ぼうとしています。各アドレスの各ビットを表示し、新しいバイナリ ファイルを簡単にアップロードできる stm32f0 開発ボードがあります。私は多くのルールと機能について学んでいるたくさんのマニュアルを読んできましたが、リセット時にプログラムカウンターがどこから始まるのか、どのような種類の引数が期待されているのか、また add のようなものを書く方法さえ知りませんまたはバイナリ形式の str/ldr。この基本的な知識は、私が読んだマニュアルから除外されていますか?
m0 には完全な下降スタックがあると表示されていますが、開始点が反対側 (0x00000000) にあることを示唆しているようです。ベクターテーブルが素人の言葉でも説明できれば、それは素晴らしいことです.
c - ファイル(実行可能)のマシンコード?
実行可能ファイルのマシン コード (バイナリ) にアクセスするにはどうすればよいですか?
詳細
- 私はUbuntu(Linux)を使用しています
- .exe ファイルのマシン コード (バイナリ) にアクセスしたい (ファイルは PE 形式に従う)
- 実装にCを使用しています
c - __interceptor_strchr は何をしますか?
このマシン命令の直後に関数がクラッシュします(スタックオーバーランが原因です):
何をし__interceptor_strchr(char const*, int)
ますか?
machine-language - 機械語の構文は機械ごとに異なりますか?
機械語について質問です。機械語を使用して「Hello World」と出力されるプログラムを作成すると、コードを書いているマシンによって構文が異なります。
assembly - 機械語の足し算・引き算の基本ヘルプ
私は現在、機械語とアセンブリの学習を始めています。私が取り組んでいるプログラムはかなり単純で、10 進数と 16 進数の基本的な足し算と引き算だけですが、何らかの理由で実際の答えを得ることができません。
免責事項: はい、これは大学の課題です。いいえ、私はあなたにそれをしてほしくありません。私は教授に助けを求めましたが、彼の説明は私をさらに混乱させるだけでした.
H1 および V1 コンピューターをシミュレートする Windows プラットフォームの「sim」でこれを実行しているため、シミュレートされた環境です。
ログファイルは次のとおりです。
したがって、これが行うべきことは次のとおりです。
45(10) + 45(16) - 13(10) - 13(16) + b(16) + (-5)(10)
(10) は base10 で、(16) は 16 進数です。私自身の正気を保つために、値をプログラムに入力するときに値をbase10に変換して、一貫性を保ちました(各数値の横にあるtは、コンパイラにbase10を使用するように指示します)。
これがどのように機能するかについての私の理解は次のとおりです。
メモリ スロット 10 をロードするように指示します (はい、ここで大量のメモリを浪費していることは承知しています)。これを初期値の 45 に設定します。次に、スロット 11 で 45 を追加し、12 で 13 を減算し、19 で 19 を減算します。 13 (16 進数の 13 の 10 進数形式)、14 の 11、15 の -5 です。次に、これをすべてスロット 16 に格納します。
次に、プログラムを停止する前に、メモリ スロット 16 に格納されている数値を 16 進数と 10 進数の両方で出力します。
これまでのところ、私はこれで正しいですか?それともどこかで道に迷ったのでしょうか?それが私が知りたいことです。
現在、結果として 43 を取得していますが、計算が正しければ、実際の終了番号は 59 になるはずです。
どんな助けでも大歓迎です!
assembly - PEP/8 アセンブリ疑似操作を 16 進数の機械語に変換
教科書Computer Systems 4th Editionを読んでいます。以下の質問は、Pep/8 仮想コンピューターのコンテキストにあります。演習では、次の質問が与えられます。
次のアセンブリ言語の疑似演算を 16 進数の機械語に変換します。
- .ASCII "ベア\x00"
- .BYTE 0xF8
- .WORD 790
これらの値を 16 進数に変換しようとしていますが、教科書のプロセスの説明が理解できず、本ではあまり説明されていないように感じます。
最初の答えは、ASCII 変換テーブルでの単純なルックアップだと思います。
42 65 61 72 00
この演習の答えは次のとおりです。
- 42 65 61 72 00
- F8
- 0316
これらの答えを知っていても、2と3の答えを得る方法がわかりません
Pep/8 アセンブラーとシミュレーターのダウンロード リンクは次のとおりです。アセンブラのソースコードはこちら。