問題タブ [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 - アセンブリ言語または機械語で記述した場合、プログラムは互換性のあるプロセッサを搭載した任意のコンピュータで動作しますか?
基本的に、オペレーティングシステムの違いにもかかわらず、マシン言語またはアセンブリ言語のいずれかを使用して、x86プロセッサを搭載した任意のコンピュータで動作するプログラムを作成できるかどうかを知りたいと思っています。たとえば、プログラムを実行すると、どのコンピューターを使用していても、「Hello、World!」と表示されます。これらのいずれかを言語で知りたいと思うのは少しおかしいと思いますが、学ぶのは素晴らしいことだと思います。
assembly - 68k アセンブリのヘルプ - ジャンプ テーブル?
私は IDA で大規模な Amiga プログラムのリバース エンジニアリングに取り組んでおり、かなりの進歩を遂げました。ただ、どうしても腑に落ちないことがあります。つまり、「ジャンプ テーブル」と思われるものを使用するサブルーチンをいくつか見つけましたが、それらがどのように機能するかはよくわかりません。誰かアドバイスはありますか?
assembly - 機械語の扱いに関する質問
機械語についていくつか質問があります。
機械語コードの書き方 そして、これは実際に行われていますか?
アーキテクチャのどの部分が機械語を処理しますか? (インテルまたは AMD チップ? 他の何か?)
各マシンは異なるマシン語を持っていますか?
回答ありがとうございます:)
compiler-construction - コンパイルされたプログラムは実際に真のバイナリですか?
たとえば、C アプリケーションをコンパイルすると、出力されたファイルはバイナリとして読み取られますか、それとも OS がコンパイルを解釈しますか? 「機械語」は純粋なバイナリですか?
編集: はい、コンピューター上のすべては純粋なバイナリです。プロセッサがコンパイラによって出力されたファイルを直接解釈するのか、OS が最初に処理するのかを尋ねています。
coding-style - 機械語で書き始めるには何が必要ですか?
私は機械語の学習を始めたいと思っています。あなたは 0010011 型言語を知っています。機械語で書くために使用できるプログラムがある場合、どのプログラムを使用できますか? どうか、皆さんが「もっと良い言語が世の中にある、またはなぜそれを学びたいのか」というようなコメントを私に言うつもりであることは知っています. 私はそれを認識しているので、それらのコメントを投稿しないでください。ありがとう。
c - C で基本的な機械語をシミュレートします。
したがって、私の課題では、基本的な機械語を C でシミュレートする必要があります。機械には 16 個のレジスタ (reg[])、プログラム カウンター (pc)、およびメモリ (mem[]) があり、これらはすべて符号なし文字です。命令はファイルから読み込まれ、次の形式になっています。
B404 (1RXY = メモリ アドレス XY の値をレジスタ R にロード)。すべての数値は 16 進数です。C000 は停止コマンドです。
今私の問題は、命令を印刷するとき(a、b、c、d、およびcdに保存されている場合)、bとdに先行ゼロがあることです。指示が上記のように印刷されるように、それらを取り除くにはどうすればよいですか? (48行目)。
また、 if ステートメントのいくつかは、それらに printf() を入れたかのように呼び出されず、決して印刷されないファイルにあるようです。(48 行目から 78 行目)。
ありがとう!
assembly - 各機械語命令の実行にかかる時間は?
設定、読み取り、移動、比較などの操作の実行にはすべて同じ時間がかかりますか?
そうでない場合: どのくらいの期間かを調べる方法はありますか?
つまり、特定のタイプの cpu がさまざまなアセンブリ言語命令 (移動、読み取りなど) を実行する速度です。
assembly - 簡単なアセンブラ言語プログラムを作成するのに助けが必要
公開前の編集:それで、私は、私が全体の気紛れな質問をタイプアウトして、きちんと整理した後でのみ、それを自分でかなり理解しました。何の役にも立たないように、とにかくこれを投稿し、これが実際に正しいかどうかを尋ね、提案/コメントを求めています。私はまだ一つのことについて確信が持てません。
了解しました。私はコンピュータサイエンスの初心者です。今、私はアセンブリ言語と機械語のプログラミングについて学んでいます。これは宿題の質問ですので、私が理解するのを手伝ってください、私の顔に答えを投げないでください。条件付き分岐(ループ)を使用して、1から20までの数値の合計(答えは210)を取得するプログラムを作成しようとしています。
使用されるニーモニックは次のとおりです。
ものを入れるための10個のレジスタがあります。
したがって、基本的に2つのことを行う必要があります。1)1から20(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + ... + 20)までのすべての数値を合計する方法を見つけます。ループの作成を含み、2)カウンターを作成して、20に達したときに停止することを認識します。これは正しいですか??
これはすべて、次のように言っています。COUNTの内容(最初は0)をRegister1にロードします。ONE(1)の内容をRegister1に追加します。Register1にあるこの新しい番号をCOUNTに格納します。この新しい番号をRegister2に追加します。COUNTの内容をTWENTY(20)の内容と比較します。COUNT内の数が20以下の場合は分岐(/ repeat)します(3は条件コードです)。カウンターが20に達すると、条件が破られ、命令は次の行に進みます。レジスタ2にある数値(現在は210)を変数SUMに格納します。次に、CHannelを呼び出して、I/OデバイスにSUMの内容を表示します。その後、停止します。
さて...最初に分岐/戻るように指定する方法がわからないので、カウンターが20に達するまでこのプロセスを繰り返します。COUNTを0として指定する必要があるかどうかもわかりません。
助けてくれてありがとう。
c - a.out が機械語にないのはなぜですか?
次のプログラムをコンパイルしてgcc
、出力実行可能ファイルを受け取りますa.out
。:
を実行するcat a.out
と、ファイルが "意味不明" (これを何と呼びますか?) であり、0 と 1 の機械語ではないのはなぜですか。
assembly - 8085 命令コードの MVI 命令のバイナリ コードについて混乱しています。参照してください
レジスタ A (Intel 8085 マイクロプロセッサ) に 32H をロードする命令 MVI A,32H を検討してください。
私の本によると、これは 2 バイトの命令で、最初のバイトがオペコードで、2 番目のバイトがオペランドです。最初のバイトは 0011 1110 (16 進数で 3E) で、2 番目のバイトは 0011 0010 (16 進数で 32) です。
オペコード部分がどのように正確にマシンコードに変換されるかについて、私は混乱しています。つまり...「0011 1110」のどの部分が「MVI」を表し、そのどの部分がレジスタ A がロードされることを示しているのでしょうか? 「3E」はマイクロプロセッサに両方の情報をどのように伝えますか? つまり、データとターゲットレジスタをロードする必要があります。それとも、このオペコード全体が事前定義されており、オペコードで「MVI」と「ターゲットレジスタ」を分離できないということですか?
私の質問が理にかなっていることを願っています笑。