仮想CPUを作ってみる(1)

| コメント(0) | トラックバック(0)

個人的に,いつかやろうやろうと思っていたネタです。

CodeZineVB.NETで仮想CPUを作ろうをマターリ実装してみる。

パタヘネ読書会でもMIPSエミュレータをオレオレ実装する流れなので,雰囲気だけでも先取りしておこうと思う。

VB.NETなんて高度な言語は分からないので,Javaで頑張るぞ!

まず連載第1回はざっくり目を通して終わり。

強いて言うなら,Intelさんの所から下記マニュアルをちゃんと落としておくくらい。

で,連載第2回のレジスタをJavaで実装すると下記のような感じ。(のはず。)

32bitの汎用レジスタ(ダブルワードレジスタ)がまずあって,その下位16bitがワードレジスタで,さらにその上位8bitと下位8bitがバイトレジスタという構造。

なんかキモい感じがするけど,こういうものなのかなぁ?

public class RegisterCls{
	//共有する値
	private int m_value = 0;
	
	//32bitレジスタ
	public int getValue32(){
		return m_value;
	}
	
	public void setValue32(int value32){
		m_value = value32;
	}
	
	//16bitレジスタ
	public short getValue16(){
		return (short)(m_value & 0x0000FFFF);
	}
	
	public void setValue16(short value16){
		m_value = (m_value & 0xFFFF0000) + value16;
	}
	
	//16bitレジスタの左半分(high)
	public byte getValueHighByte(){
		return (byte)((m_value & 0x0000FF00) >> 8);
	}
	
	public void setValueHighByte(byte value8){
		m_value = (m_value & 0xFFFF00FF) + ((short)value8 << 8);
	}
	
	//16bitレジスタの右半分(low)
	public byte getValueLowByte(){
		return (byte)(m_value & 0x000000FF);
	}
	
	public void setValueLowByte(byte value8){
		m_value = (m_value & 0xFFFFFF00) + value8;
	}
}

トラックバック(0)

トラックバックURL: http://ttlweb.jp/cgi-bin/mt/mt-tb.cgi/896

コメントする

プロフィール:ttl

  • ・勉強と運動が好きです。
  • ・カエルさんも好きです。
  • ・λはもっと好きです。
  • 購読する このブログを購読

アーカイブ

このブログ記事について

このページは、ttlが2009年7月 7日 00:33に書いたブログ記事です。

ひとつ前のブログ記事は「GMC-4が届いた」です。

次のブログ記事は「TVのリモコンを分解してみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.27-ja