問題タブ [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.
emulation - 6502 CPU エミュレーション
週末なので、趣味のプロジェクトを書いて 1 週間のプログラミングから解放されます。
昨日、MOS 6502 CPU エミュレータのフレームワークを書きました。レジスタ、スタック、メモリ、およびすべてのオペコードが実装されています。(以下ソースへのリンク)
私が書いたデバッガーで一連の操作を手動で実行することはできますが、NES ROM をロードして、プログラム カウンターをその命令に合わせたいだけです。これが欠陥のあるオペコードを見つけるための最速の方法であると考えました。
簡単な NES rom ローダーを作成し、ROM バンクを CPU メモリにロードしました。
問題は、オペコードがどのようにエンコードされているかがわからないことです。オペコード自体は、オペコードを一意に識別するオペコードごとに 1 バイトのパターンに従うことを知っています。
等
ただし、オペコード引数がどこにあるのかわかりません。直後のバイトですか?絶対メモリでは、バイトではなくショートかもしれないと思います。
このCPUのメモリモデルに精通している人はいますか?
編集:これはおそらく暗闇で撮影されていることを認識していますが、古い学校のアップルとコモドールのハッカーがここに潜んでいることを望んでいました.
編集:ご協力いただきありがとうございます。各操作を調整するための適切な変更を実装した後、CPU はマリオ ブラザーズをロードして実行できます。開始を待ってループする以外は何もしませんが、それは良い兆候です:)
ソースをアップロードしました:
https://archive.codeplex.com/?p=cpu6502
エミュレーターがどのように機能するのか疑問に思ったことがある人なら、理解するのは非常に簡単です。少なくとも最適化されていませんが、2.4 GHz マシンで 2 MHz で動作する CPU をエミュレートしています :)
compiler-construction - コンピュータプログラミングの仕組みの基本を誰か教えてもらえますか?
プログラミング言語のすべての単語が実際に何かを行う理由は何ですか? つまり、コンピューターにこれらの単語の意味を理解させるために実際に何が起こっているのでしょうか? 自分のコンピューターに何かをするように口頭で伝えても、コンピューターはそれを理解しません。では、これらの人間の言葉を言語に書き込んで、実際にコンピューターに望ましい動作をさせるにはどうすればよいのでしょうか?
c++ - 私のC++プログラムに関する入力を探しています。Simpletron、機械語
編集:それで、コーディングのどこかに問題があるようです。プログラムを実行して変数を入力すると、常に同じ答えが返されます。"場所76のコンテンツは0です。
さて、私は数日前に質問についてここに投稿しましたが、それは単なるコンパイルエラーだったので、これがおなじみのように見える場合は、それが理由です。繰り返しになりますが、私はプログラミングに不慣れで、私は最高ではないので、単純にするために行きます。また、これはSMLプログラムです。とにかく、これは宿題であり、私はこれで良い成績を望んでいます。だから私はインプットを探していて、このプログラムが彼らが探していることを私が望んでいることを実行することを確認しました。とにかく、ここに手順があります:次の各タスクを実行するためのSML(Simpletron Machine言語)プログラムを作成します。
A)センチネル制御ループを使用して、正の数sを読み取り、それらの合計を計算して出力します。負の数が入力されたら入力を終了します。B)カウンター制御ループを使用して、正と負の7つの数値を読み取り、平均を計算して出力します。C)一連の数字を読み、最大の数字を決定して印刷します。最初に読み取られた数値は、処理する必要のある数値の数を示します。
それ以上の期限なしで、これが私のプログラムです。すべて一緒に。
プログラムA
プログラムB
プログラムC
c++ - 私は昨日これを尋ねましたが、与えられた入力の後、まだ実装に問題があります
これを修正する方法や何が間違っていたのかわかりませんが、値を入力するたびに実行プロンプトが閉じられます。
だから、コーディングのどこかに問題があるようです。プログラムを実行して変数を入力すると、常に同じ答えが返されます..「場所 76 の内容は 0 です。」 そのメモについて、誰かが私に「わかりませんが、プログラム A が命令 10 と 11 で分岐される固定アドレスを誤って持っているのではないかと疑っています」と言いました。- mctylr しかし、それを修正する方法がわかりません..
R Samuel Klatchko からこのアイデアを組み込む方法を見つけようとしています..何が欠けているのかまだわかりませんが、それを機能させることはできません..
私はプログラミングが初めてで、最高ではないので、簡単にするつもりです。これも SML プログラムです。とにかく、これは宿題なので、良い成績を取りたいです。そこで私は意見を求め、このプログラムが私が望んでいることを実行できるようにしました。とにかく、手順は次のとおりです。SML (Simpletron Machine language) プログラムを作成して、次の各タスクを実行します。
A) センチネル制御ループを使用して、正の数 s を読み取り、それらの合計を計算して出力します。neg 番号が入力された場合は、入力を終了します。B) カウンタ制御ループを使用して、正と負の 7 つの数値を読み取り、平均を計算して出力します。C) 一連の数字を読み取り、最大の数字を決定して出力します。最初に読み取られる数値は、処理する数値の数を示します。
これ以上の期限はありませんが、これが私のプログラムです。すべて一緒に。
assembly - PowerPC での条件付き移動
PowerPC (32 または 64) 命令セットに同等の条件付き移動はありますか? 条件分岐を使ってエミュレートできるのは明らかですが、それを上回るものが欲しいです。
assembly - PowerPC が可変 SPR に移行
私はアセンブリ マクロを C プログラムに書き込んでいますが、これはまったく新しいので、何かに引っかかってしまいました。汎用レジスタから専用レジスタにデータを移動するためのマクロを作成しようとしています。
私の問題は、データを GPR から SPR に移動するために見つけた構文が、別のレジスタに格納されている変数を使用したいのに、一定の SPR 値を取ることです。
私は次のようなものを求めています:
そのようなマクロが利用できない理由はありますか?どうすれば自分でマクロを作成できますか?
よろしくお願いします。
----編集: ---- 現在のように、正しい mtspr セクションにジャンプする巨大なスイッチ ケースが C コードに含まれています。特定の SPR: を読み書きするための 20 のセクションがあり、それぞれがまったく同じように見えますが、一定の値だけ異なります。
assembly - 最初のコンピュータプログラムはどのように作成されましたか?
重複の可能性:
最初のコンパイラはどのように作成されましたか?
この質問はいつも私を悩ませてきました。プログラムをコンパイルするには、プログラムの一種でもあるコンパイラが必要ですが、コンパイラをコンパイルしたのは何ですか?最初のコンパイラはアセンブリまたはマシンコードで書かれていると誰かが私に言った。しかし、それについて考えると、それはまだ完全な話ではありません。結局のところ、オペレーティングシステムとドライバーがなくても、マシンコードはハードドライブからRAM、CPUにどのように移行するのでしょうか。ドライバーはなんらかの方法でプログラムされている必要がありました。
非常に初期のコンピューターにはスイッチがあり、スイッチを切り替えてビットを示すことができたのは知っています。私は、スイッチから、コンピュータープログラムに指示することなく、CPUにマシンコードを読み取らせる方法への飛躍がどのように行われたのか疑問に思っています。
assembly - 即時アドレス指定用のマシン コード テンプレート
即時アドレッシング用のマシンコード言語は何ですか..
レジスタ アドレス指定用のマシン コード テンプレートが
OPCODE(6ビット) D(1ビット) W(1ビット) MOD(2ビット) REG(3ビット) R/M(3ビット)
合計 16 ビット。
m インテル 80386 インテル マイクロプロセッサを使用しています!
c - Cでの関数呼び出しには、いくつのマシン命令が必要ですか?
x86プラットフォーム用のgccでコンパイルされたCプログラムの関数呼び出しに最初から最後までいくつの命令が必要か知りたいです。
assembly - アセンブリ言語または機械語で記述した場合、プログラムは互換性のあるプロセッサを搭載した任意のコンピュータで動作しますか?
基本的に、オペレーティングシステムの違いにもかかわらず、マシン言語またはアセンブリ言語のいずれかを使用して、x86プロセッサを搭載した任意のコンピュータで動作するプログラムを作成できるかどうかを知りたいと思っています。たとえば、プログラムを実行すると、どのコンピューターを使用していても、「Hello、World!」と表示されます。これらのいずれかを言語で知りたいと思うのは少しおかしいと思いますが、学ぶのは素晴らしいことだと思います。