KBone12 / nand2tetris-rs

I try doing [Nand to Tetris](https://www.nand2tetris.org/) in Rust.
https://kbone12.github.io/nand2tetris-rs/
1 stars 0 forks source link

`set_load` の順番が固定されてしまっている #58

Closed KBone12 closed 3 years ago

KBone12 commented 3 years ago

現状

load が Register では set_input されたときのみのため、 set_input する前に set_load を必要がある。しかしこの仕様のおかげで、 Ram 系で set_load を全てのレジスタに対して行っても問題が無くなっている。

KBone12 commented 3 years ago

解決策として、 Register や Ram 等がそれぞれ入力を保持するというやり方があるが、これだとすぐにスタックオーバーフローしてしまう。

KBone12 commented 3 years ago

1からの大工事にはなるが、入力を参照( & あるいは Rc )として保持しておき、 get_output 等で要求する方法もある。 Dff は現在の出力を内部で保持しておいて、 clock が入った際に入力から読み込んだ値を新たに現在の出力として保持すれば行けそう( NandGames の Latch のように実装しようとするのは不可能)。

KBone12 commented 3 years ago

参照を保持する方法は自己参照等がややこしいため、却下

KBone12 commented 3 years ago

clock の際に全ての入力を受け取る方針が良さそう