無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

バイナリをつつく16−愛のメモリー2

?「インドリおきて・・・」
インドリ「(ああ誰かの可愛い声がする)」
?「インドリおきて・・・」
インドリ(あれ、ドリィちゃん?僕を看病してくれたのかな?もしかして僕のこと・・・)
インドリィちゃん「早く・・・」
インドリ(そうならそうともっと早く言ってくれればよかったのに。ドリィちゃんはツンデレなのかな?)
インドリィちゃん「足りない・・・」
インドリ(前にも同じこと言われたような・・・)
インドリィちゃん「早く起きなさい!レジスタが足りなぃ。」
インドリ「えっもうレジスタは実装したよ。」
インドリィちゃん「イベントにレジスタが足りないぃ。」
インドリ「何?何?何?何?何?何?何?何?。」(あたふた)
インドリィちゃん「この鳥頭!ReceivesDataEventにレジスタプロパティがないと、あとでレジスタに値を反映できないでしょうが!」
インドリ「ごめん。」(あたふた)
インドリィちゃん「さっさと実装しない。」
幽霊のような怖さを感じてインドリはあわてて、ReceivesMemoryDataEventArgsを実装した。
実装したコードは次の通りだ。
public class ReceivesMemoryDataEventArgs : MemoryAccessEventArgs
{
    private RegisterName target;

    public ReceivesMemoryDataEventArgs( 
        uint startAddress, byte dataLength, 
        ValueType value, RegisterName regName )
        : base( startAddress, dataLength, value ) 
    {
        this.target = regName;
    }
}
新しいイベントにすることも出来たが共通要素も多いし、まだ MemoryAccessEventArgsの実装が不完全だったので、インドリはひとまず継承することにした。
インドリ「さてリファクタリングするぞ」

鳥ゃーバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

//メモリーからデータを受信する。

public event MemoryAccessEventHandler ReceivesDataEvent;

private void OnReceivesDataEvent( ReceivesMemoryDataEventArgs e ) 
{
    MemoryAccessEventHandler temp = SendDataEvent;
    if ( temp != null ) temp( this, e );
}

private void ReceivesData( 
    uint startAddress, byte dataLength, 
    ValueType value, RegisterName regName ) 
{
    MemoryAccessEventArgs e = 
        new MemoryAccessEventArgs( startAddress, dataLength, 
            value, regName );
    OnReceivesDataEvent( e );
}

インドリィちゃん「油断禁物。」
インドリ「ピぇー」

鳥ゃーバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

インドリ「さっきのイベントの実装で、CPUがメモリデータを要求することは出来るけど、今のままじゃ受け取れないから、 まずはCPUオブジェクトのイベント登録だ!」
//自分を保持するPCを記憶する。
private Machine owner;
public Machine Owner {
    get { return owner; }
}

public ControlProcessingUnit( Machine owner ) {
    this.owner = owner;
    //自分を保有するマシンからメモリデータが送られてきた時の処理
    this.owner.SendDataEvent += 
        new Machine.MemoryAccessEventHandler
        ( ReceivesMemoryDataEvent ); 
}


インドリ「続いて前回作ったMachineオブジェクトもイベントを登録だ!」

public Machine( ) 
{
    this.cpu = new ControlProcessingUnit( this );
    //データがCPUから送られてきた事が一目でわかる名前にする
    this.cpu.SendDataEvent += 
        new ControlProcessingUnit.MemoryAccessEventHandler
        ( ReceivesMemoryData );

    //CPUがデータを要求していることが一目でわかる名前にする
    this.cpu.ReceivesDataEvent += 
        new ControlProcessingUnit.MemoryAccessEventHandler
        ( NotifyMemoryDataEvent );
}

インドリ「はぁはぁ・・・今回の記事やたら長いぞ。僕もう疲れたよ。」
インドリィちゃん「今日はもう休みなさい。」
インドリ「!!?インドリィちゃんが初めて優しい言葉を」
インドリィちゃん「うるさい!」
ドリィちゃんは素早くインドリの背後に回ると、首に手刀を振り落とした。
インドリ「きゅう!!」(バタ)
いいところだけど長すぎるから今回はおしまい。
ドリィちゃんは果たしてツンデレなのか?
そもそもインドリとドリィちゃんの関係は?
MOVE命令の実装は何時になったら終わるのか?
色々な謎を残したまま次回へ続く。
別窓 | バイナリ | コメント:0 | トラックバック:0 | ∧top | under∨
<<中の人の徒然草6 | 無差別に技術をついばむ鳥 | 中の人の徒然草5>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |