問題タブ [dcpu-16]
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.
encryption - 16 ビット システム用の RC4 の書き込み
私は DCPU-16 用の RC4 を書いていますが、始める前にいくつか質問があります。
RC4 アルゴリズム:
私は 16 ビット ワードを扱っているため、各要素はS[]
、予想される 0 ~ 255 ではなく、0 ~ 65535 の範囲に収まります。K は 0 ~ 65535 である必要があります。この問題に対処するための最善の方法は何でしょうか?
私が見るオプション(およびそれらの問題)は次のとおりです。
- どこでも引き続き使用し、連結された 2 つのラウンドを出力に取り込みます (実行に時間がかかるため、 CPBをできるだけ低く
Mod 255
保ちたいと考えています)。 - RC4 を微調整
K
して、長さ 255 の配列を使用しながら 16 ビットの数値になるようにしS[]
ます (暗号化を正しく行いたいので、RC4 をいじる際の間違いが心配です)。
私の最良の選択肢は何ですか?#1をしなければならないかもしれないと感じていますが、ここにいる人々が私に#3をする自信を与えてくれることを願っています.
dcpu-16 - DCPU-16 の符号付き演算/制御フロー?
DCPU-16 ( Notch の新しいゲームのCPU )には署名された//命令がないようです。IF
MUL
DIV
超信じられないほど苦痛ではない符号付き演算/制御フローを実行する方法はまだありますか?
bison - flex+bison アセンブラにプリプロセッサを追加するにはどうすればよいですか?
flex+bison を使用して簡単なアセンブラを作成しました。アセンブリ言語にプリプロセッサ (マクロ) を追加したいと考えています。flex+bison を使用するのはこれが初めてで、どうすればよいかわかりません。
flex+bison の別のインスタンスを追加し、前処理を完全に個別に行うことは適切ですか? それとも、処理のさまざまな段階でさまざまな構造の表現をサポートしていますか?
興味があれば、DCPU-16 アーキテクチャ用のアセンブラはこちらにあります。
pascal - Turbo Pascal オーバーレイはどのように機能しましたか?
ゲーム 0x10cの 16 ビット DCPU 用のアセンブリンカーを実装しています。
誰かが私に提案したテクニックの 1 つは、実行時にコードを交換するために「当時の Turbo Pascal のようなオーバーレイ」を使用することでした。
基本的な考え方 (オーバーレイされたシンボルを同じメモリにリンクし、ref の前にスワップ) はわかりましたが、それらの実装は何でしたか?
コンパイラが参照の前に挿入したのは関数でしたか? 罠だった?オーバーレイのデータはオーバーレイの場所に保存されていましたか、それとも大きなテーブルのどこかに保存されていましたか? うまく機能しましたか、それとも頻繁に壊れましたか? オーバーレイされた Pascal とリンクするためのアセンブリ用のインターフェイスはありましたか (またはその逆)、または互換性がありませんでしたか?
Google は基本的に何の情報も提供していません (最新の Pascal コンパイラを無視していること以外は)。そして、私は 5 歳の若さで、彼らが現役だったときにそれらを必要とすることはありませんでした。
stack - SET A、0x1EとSET A、0x1F
これはdpcuでの私の最初の試みであり、dpcu-16アセンブリによって生成されたマシンコードをチェックしています
私はこのエミュレーターを使用しています:http://dcpu.ru/
によって生成されたコードを比較しようとしています
生成されるコードは次のとおりです。
これら2つの値の間でオペランドサイズが変わる理由がわかりません
assembly - DCPU 16の元の仕様では、IFN A、0x10は0xc00dにどのように変換されますか
NotchのDCPU-16仕様のアセンブラを作成しようとしています。このCPUの元の仕様はここにあります。
関連する行:
..。
これまでの説明は理解できましたが、これは私にとっては、単なる2語ではなく少なくとも2語の長さである必要があります。0xc00d
になります7c01 0010
。それで
すべきで7c0d 0010
はないですか?
b
の引数がIFN
、命令に[PC ++]またはnextwordコンポーネントを必要としないのはなぜですか?
assembly - DCPU-16 の XNU カーネル クローン
https://github.com/galaxas0/MachX-Kernel
失敗するように設計されたプロジェクトに着手する前に、簡単な質問をして、失敗しないように物事を整理したいと思います.DCPU-16はカーネルをどのようにロードするのでしょうか...仮想であり、すべて. 物理コンピューターでのブートストラップとカーネルの初期化のプロセスは理解していますが、DCPU-16 には戸惑っています。まったく同じように動作する 1:1 16 ビット プロセッサであると仮定する必要がありますか?
yacc - マクロ展開による元の行番号の追跡
私は C、flex、bison で書かれた楽しみのためにアセンブラに取り組んでいます。マクロ、インクルード、繰り返しブロックを追加したいのですが、別の前処理段階のパーサーでこれを行うことを考えていました。
私の質問は、元のソース行番号 (およびファイル名) を追跡するにはどうすればよいですか? これは、有用なエラー メッセージの生成、きれいな印刷、およびデバッグ情報の生成に使用されます。
前処理が完了した後の 2 番目のパーサーの yylineno は、おそらくマクロ展開などの後にオフセットされます。
assembly - DCPU-16はキーボードからの入力を受け付けません
0x10cに備えるために、DCPU-16のアセンブリの学習を開始しましたが、実行中のチュートリアルの終わりに到達すると、プログラムがキーボード入力に応答していないことがわかりました。ステップバイステップに入ると、CPUがキーボード入力を待機するように設定されたループでコードがスタックしていることがわかりました。
ここで問題のある行:
コードが古いバージョンのDCPU用であることが原因でしょうか?もしそうなら、それは今どのように機能しますか?
Stackoverflowの最初の投稿です。偽物を作った場合は失礼します。ありがとうございます。完全なコード:
dcpu-16 - DCPU16 のキーボードから文字を取得する最良の方法
したがって、私の目標は、ユーザーが で終了する文字列を入力するまで呼び出されたときにハングするサブルーチンを作成し、<return>
それを返します(おそらくユーザーが指定したアドレスに書き込むことによって)。
私の問題は、キーボードから個々の文字を取得する最善の方法にあります。私が見たように、3つの方法があります:
キーボードからの割り込みをリッスンし、それらに応答して文字を取得します。これは、 によって実行されるロジックが
getline
割り込みハンドラ内にあることを意味し、いくつかの問題を引き起こしているようです。つまり、キーgetline
を押したときの応答としてどのように戻りますか?<return>
割り込みハンドラーでは、戻りアドレスが手元にありません。また、割り込みハンドラーに特定のロジックを入れすぎるパターンは、私には...間違っているように思えます...私は低レベルのコーディングに非常に慣れていませんが。キーを押すためにキーボードを引っ張り続けるだけです。
押されたすべての文字を循環バッファ (おそらく長さ 1) にロードすることにより、割り込みハンドラで古い 1.1 の動作を実装します。
これらのオプションについて、もう少し見通しがあればいいでしょう。