1

比較的単純な 6502 プロセッサ用のエミュレータを Ruby で作成しています。

私の質問は、アセンブリ命令の詳細、それに続くオペランドの数、最後にそれを実装するメソッド/関数でハッシュまたは配列を定義する方法はありますか?

次に、コードのどこかで、読み取られた命令に基づいてハッシュまたは配列を評価し、それに実装された適切なメソッド/関数を起動できますか?

私はアイデアにオープンです...

現在、私はそのような構造を持っていますが、それを実装するのに苦労しています:

@inst.push [ 0x48, :implied, 1, PHA]
@inst.push [ 0xA2, :immediate, 2, LDX ]
@inst.push [ 0xA9, :immediate, 2, LDA ]
@inst.push [ 0xAD, :absolute, 3, LDA ]
@inst.push [ 0xA6, :zeropage, 2, LDX ]
@inst.push [ 0xB6, :zeropagey, 2, LDX ]
@inst.push [ 0xAE, :absolute, 2, LDX ]
@inst.push [ 0xBE, :absolutey, 2, LDX ]
@inst.push [ 0x8A, :implied, 1, TXA ]

ラムダ、プロクス?私がここで達成しようとしていることに対して、そのようなことはできますか?

私は本当に、各命令の大きな「ケース/いつ」とそれに続く1つの巨大で醜く、比較的不親切な場所にステートメントが続くことを望んでいません。

ありがとう!

4

2 に答える 2

0

sendオブジェクトの任意のメソッドを呼び出すために使用できます

>> a = [1,2,8]
=> [1, 2, 8]
>> a.send(:size)
=> 3
>> a.send(:pop)
=> 8
>> a
=> [1, 2]
>> a.send(:push,42)
=> [1, 2, 42]

したがって、命令を実装するメソッドの名前をシンボルとして配列に格納し、シンボルをインタープリターに送信して関連するメソッドを呼び出すだけです。

于 2012-12-24T09:48:09.497 に答える