問題タブ [mmix]
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.
git - CVS/Git の MMIX リポジトリを取得する
MMIX の CVS リポジトリを CVS/Git に取得するにはどうすればよいですか?
で github のレポをクローンする方法は知っていますがgit clone URL
、sourceforge を実際に使用したことはありません。彼らは私には新しいCVSを使用しています。
私の失敗した試み
最初に CVS でレポをダウンロードしようとすると、CVS -irc で次のヒントが得られます
しかし、期待どおりに機能していません。
assembly - MIXまたはMMIX - 何が最高ですか
こんにちは、最初の質問です。「The Art of Computer Programming」を読み始めました。私はそれが難しいことを知っています。まず、本の言語を学ぶことにしました。まず MIX から始めます。いくつかの演習を行いましたが、本のプログラムで管理できると思います。しかし、問題は私が書いたどこにでもあり、MIXは古い、MMIXを学ぶなどです。OKS、しかしなぜ - これは私の質問ですか? 私は 1 か月 MIX を学習していますが、本の問題を理解し始めましたが、作業を停止して新しい ASM の学習を再開しました。なぜですか? MIX は古いですが、本に書かれているコードはすべて MIX です。時間をかけて MMIX を学習すると、問題をもう一度書き直さなければならず、非常に困難になると思います。MIX は古いので、本当に新しいバージョンを学ばなければなりませんか? TAOCP の経験が豊富な人からアドバイスをもらえますか: MIX の例、問題などの本を読み続けるか、MMIX を学ぶのをやめてください。と、
taocp - レジスターに含まれる数値の印刷
私はMMIXを学んでいるので、それ自体に1を追加して結果を出力する簡単なプログラムを作成してみました。残念ながら、何も印刷されません。これが私のプログラムです:
私は何を間違っていますか?
assembly - MMIX用アセンブラファイルを複数リンクする方法
「fprint」のようなものを実装する小さなライブラリを書いたとします。私に MMIX を教えてくれる本 (Das MMIX-Buch、ドイツ語) は常に lib 全体を新しいプログラムにコピーしますが、私はこのアプローチが嫌いです。ライブラリを 1 つのオブジェクト ファイルにアセンブルし、メイン プログラムを別のオブジェクト ファイルにアセンブルして、これら 2 つをリンクする方法はありますか? これを行う方法?
c - mmix 上の gcc での Printf の問題
http://www.bitrange.com/mmix/install.htmlに従って、mmix 用の gcc 4.6.0 をコンパイルしました。単純な hello world や、最初の文字列以外の printf の呼び出しを試した後、最初の文字列だけが出力されます。例えば
生成されたアセンブリは次のようになります。
trie - mmoオブジェクト形式のシンボルテーブルで使用される試行はどのように機能しますか?
mmo
DonKnuthの教育MMIX
アーキテクチャで使用されているオブジェクトファイル形式がどのように機能するかを理解しようとしています。私はMMIXwareを購入していないので、アセンブラーとシミュレーターの読み書きのできるソースファイルから詳細のほとんどを推測する必要があります。
オブジェクト形式は、シンボルテーブルを格納するために特別な三分探索木を使用します。コードを見ると、それがどのように機能するのかよくわかりません。誰かが私にいくつかの詳細を説明してもらえますか?特にツリーがどのようにシリアル化されるかについて。
exception - MMIX: 動的トラップに関する質問
MMIXの割り込みについていくつか質問があります。特殊レジスタrKの定義は「割り込みマスクレジスタ」です。しかし、異なるイベントを異なる方法で扱うようです。
I/O ビットの場合 (** ビットを呼び出しましょう: これは通常のケースです。外部割り込みが発生した場合、rK の ** ビットが 0 の場合、rK の ** ビットが 1 に設定されるまで、rQ の ** ビットは「1」を保持します。となり、トラップが発生します。
for S-bit (プログラム): のソース コードによると
mmix-pipe
、rK の S-bit が 0 の場合でも、セキュリティ例外が発生します。rK の S ビットは 0 から 1 に変更されます。したがって、正のアドレスでは rK の S ビットは 1 である必要があり、負のアドレスでは rK の S ビットは何の効果もありません。システムに「セキュリティ上の問題があった」ことを伝えるために rQ の S ビットのみが使用されます。rK の S ビットは役に立たないようです。Pビット(プログラム)の場合:「命令が特権(負の)仮想アドレスから来る」のは悲しいことです。mmix-doc.pdf にあります。しかし、PC が負のアドレスにある場合、rQ の P ビットが常に 1 に設定されるとは限りません (mmix-pipe も rQ の P ビットを設定しません)。
私はそれを証明することができます:「再開」insn の前に実行されたすべての命令が rQ の P ビットを 1 に設定する場合、再開は rQ の P ビットも 1 に設定します。 insn は常に TRAP をトリガーします。それは不可能です。そのため、P 例外が禁止されている場合、rQ の P ビットは 1 に設定されません。
したがって、rK の P ビットはマスクとして使用されるだけでなく、「例外チェックをバイパスするオプション」として使用されます。
ここにいくつかの質問があります。
rK のすべてのビットを割り込みのマスクとして作成しないのはなぜですか? S/P ビットをそれほど奇妙にする理由はありますか?
rK の対応するビットが 0 の場合、他の rQ のプログラム ビット (rwxnkb) を 1 に設定しますか?
Neg-address のように、トリップは発生しませんが、DVWIOUZX ビットは発生した直後に 1 を保持しますか?
assembly - mmix インタラクティブ モード中にレジスタの内容を検査する
対話モードで mmix を使用して、レジスターの内容を確認したいときにいつでも表示する方法を知りたいです。たとえば、単純な mmix プログラムがあります。
そして、mmix -i myprog.mmo を実行して出力を取得できます。
これはすべて良いことです。しかし、これをインタラクティブに実行している途中でレジスタの内容を調べたい場合はどうすればよいでしょうか? また、内容を10進数ではなく16進数で見るのはどうでしょうか。
mmix - Mmix NEG および NEGU オペコード
NEG および NEGU の定義によると、
$Z = s(-1)
またはとしましょうu(2^64 - 1)
。次に、最初のオペコードは、 の$X
ときに値 1 をレジスタに入れます。Y = 0
最近のオペコードは、u(-(2^64 - 1)) mod 2^64 = 1
. 私は正しいですか?NEG
次の場合、命令はオーバーフロー例外を発生させる必要があり$Z = -2^63
ますか?