[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11. R3000ユニット

r3000クラスは、R3000プロセッサをシミュレートする具体プロセッサ クラスである。プロセッサ内の5段命令パイプラインをシミュレートしている。 r3000クラスの実装のために、以下のクラスが使用されている。

11.1 r3000_word  
11.2 r3000_register_fileクラス  
11.3 r3000_instructionクラス  
11.4 r3000_pipeline_stageクラス  
11.5 r3000_instruction_bufferクラス  
11.6 r3000_stallクラス  
11.7 r3000_stall_bufferクラス  
11.8 r3000_multiply_unitクラス  
11.9 r3000_bus_interfaceクラス  
11.10 r3000_directmap_cacheクラス  
11.11 r3000_memory_access_unitクラス  
11.12 r3000_write_bufferクラス  
11.13 r3000_write_buffer_unitクラス  
11.14 r3000_cp0_register_fileクラス  
11.15 r3000_cp0クラス  
11.16 r3000_integer_unitクラス  
11.17 r3000クラス  
11.18 r3000_processing_elementクラス  
11.19 mips_executableクラス  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.1 r3000_word

R3000プロセッサのワード等は、typedefで定義されている。

r3000_word
R3000用のワード定義。4バイト以上の基本型が割り当てられている。

signed_r3000_word
符号付きワード。

unsigned_r3000_word
符号なしワード。

sizeof_r3000_word
size_t型の定数で、ワードのバイト数を表す。値は4である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.2 r3000_register_fileクラス

R3000プロセッサの32個の一般レジスタを格納するレジスタファイルのクラス。 register_file<word, c_array<32>>クラスを継承している。本来の R3000 プロセッサのレジスタ0は値が0に固定されているが、このクラスにはそ の機能はない。See section 7.7 register_fileクラス.

static string register_name(int i)
引数で示される番号のレジスタのエイリアス名を参照する。

static int register_number(const string&)
引数で示されるエイリアス名のレジスタの番号を参照する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.3 r3000_instructionクラス

R3000プロセッサの命令セットのそれぞれの命令を表す。

void set(address_type, data_type)
命令を設定する。第一引数に命令のアドレス、第二引数に命令のワードを与え る。命令のアドレスは分岐先のアドレスを計算する際に使用される。

void clear(void)
命令をnopにする。

r3000_word image(void) const
命令のワードを参照する。

address_type pc(void) const
命令のアドレスを参照する。

r3000_instruction::operation_type operation(void) const
命令の分類(Iタイプ、Rタイプなど)を参照する。実際の値については `r3000_instruction.h'を参照のこと。

r3000_instruction::opcode_type opcode(void) const
命令の種類(lwaddなど)を参照する。実際の値については `r3000_instruction.h'を参照のこと。

bool is_i_type(void) const
命令がIタイプであれば真を返す。

bool is_j_type(void) const
命令がJタイプであれば真を返す。

bool is_r_type(void) const
命令がRタイプであれば真を返す。

bool is_co_type(void) const
命令がコプロセッサ命令であれば真を返す。

bool is_load(void) const
命令がロード命令であれば真を返す。

bool is_store(void) const
命令がストア命令であれば真を返す。

bool is_load_or_store(void) const
命令がロード命令またはストア命令であれば真を返す。

int rs(void) const
rsフィールドを参照する。

int rt(void) const
rtフィールドを参照する。

int rd(void) const
rdフィールドを参照する。

int sa(void) const
saフィールドを参照する。

int base(void) const
baseフィールドを参照する。

data_type immediate(void) const
immediateフィールドを参照する。

signed_data_type signed_immediate(void) const
immediateフィールドを符号付きワードで参照する。

data_type target(void) const
targetフィールドを参照する。

int coprocessor_number(void) const
コプロセッサ番号を参照する。

data_type break_code(void) const
break命令のコード番号を参照する。

address_type jump_address(void) const
無条件分岐命令の分岐先アドレスを参照する。

address_type branch_address(void) const
条件分岐命令の分岐先アドレスを参照する。

string opcode_string(void) const
opcodeの文字列を得る。

string operation_string(void) const
命令の文字列を得る。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.4 r3000_pipeline_stageクラス

R3000プロセッサ内の命令バッファの1エントリを表す。命令フェッチ、レジス タフェッチ、実行、メモリアクセス、ライトバック等の処理を行うためのイン タフェースを持つ。

void instruction_fetch(address_type, data_type)
命令フェッチを行う。第一引数に命令のアドレス、第二引数に命令のワードを 与える。命令フェッチを行うと、内部変数に入出力のフラグ、レジスタ番号な どがセットされる。

void register_fetch(const r3000_register_file&)
レジスタフェッチを行う。引数にレジスタファイルを与える。入力された命令 に示されたレジスタ番号などを用いて、与えられたレジスタファイルからレジ スタの値をフェッチする。

void forwarding(const r3000_pipeline_stage&)
レジスタ値のフォワーディングを行う。引数に転送元の命令ステージを与える。 与えられた転送元ステージの出力レジスタ番号が自分の入力レジスタ番号に等 しい場合、転送元ステージの出力レジスタ値を自分の入力レジスタ値に転送す る。

void execute(void)
命令フェッチ、レジスタフェッチ、フォワーディングの結果を元に演算を行う。 これにより命令アクセスのアドレス、出力レジスタ値、分岐先アドレスが確定 する。

void load_fetch_for_big_endian(data_type)
ロード命令のロードデータをフェッチする。引数にフェッチするワードを与え る。この命令はビッグエンディアン用である。

void load_fetch_for_little_endian(data_type)
ロード命令のロードデータをフェッチする。引数にフェッチするワードを与え る。この命令はリトルエンディアン用である。

void partial_word_store_fetch_for_big_endian(data_type)
部分ワードストア命令でマージするワードデータをフェッチする。引数にフェッ チするワードを与える。この命令はビッグエンディアン用である。

void partial_word_store_fetch_for_little_endian(data_type)
部分ワードストア命令でマージするワードデータをフェッチする。引数にフェッ チするワードを与える。この命令はリトルエンディアン用である。

void mf_fetch(data_type)
mf命令(mfhimflomfc)でロードするワード データをフェッチする。引数にフェッチするワードデータを与える。

void writeback(r3000_register_file&)
レジスタファイルに出力レジスタ値を書き込む。引数にレジスタファイルを与 える。

r3000_instruction::operation_type operation(void) const
命令の分類(Iタイプ、Rタイプなど)を参照する。実際の値については `r3000_instruction.h'を参照のこと。

r3000_instruction::opcode_type opcode(void) const
命令の種類(lwaddなど)を参照する。実際の値については r3000_instruction.hを参照のこと。

bool is_integer_input(void) const
整数演算ユニットからの入力を行う命令であれば真を返す。

bool is_integer_output(void) const
整数演算ユニットへの出力を行う命令であれば真を返す。

bool is_coprocessor_input(void) const
コプロセッサからの入力を行う命令であれば真を返す。

bool is_coprocessor_output(void) const
コプロセッサへの出力を行う命令であれば真を返す。

data_type source1(void) const
命令へフェッチした入力レジスタの値を参照する。

data_type source2(void) const
命令へフェッチした入力レジスタの値を参照する。

data_type distination(void) const
命令から出力する値を参照する。

address_type access_address(void) const
メモリアクセスのアドレスを参照する。

address_type word_aligned_access_address(void) const
メモリアクセスのワード境界のアドレスを参照する。

data_type access_data(void) const
メモリにストアするデータを参照する。

address_type distination_pc(void) const
分岐先アドレスを参照する。

bool is_load(void) const
命令がロード命令であれば真を返す。

bool is_store(void) const
命令がストア命令であれば真を返す。

bool is_load_or_store(void) const
命令がロード命令またはストア命令であれば真を返す。

data_type break_code(void) const
break命令のコードを参照する。

string opcode_string(void) const
opcodeの文字列を得る。

string operation_string(void) const
命令の文字列を得る。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.5 r3000_instruction_bufferクラス

R3000プロセッサ内の命令バッファを表す。命令バッファクラス instruction_buffer<r3000_word, c_array<r3000_word, 5>>クラスの 派生クラスである。See section 7.6 instruction_bufferクラス.

パイプライン段数は5段で、各ステージの参照にステージ名を使用できる。ス テージ名は以下の通りである。

if_stage()
命令フェッチステージ(stage 0)

rd_stage()
レジスタフェッチ&デコードステージ(stage 1)

ex_stage()
実行ステージ(stage 2)

mm_stage()
メモリアクセスステージ(stage 3)

wb_stage()
ライトバックステージ(stage 4)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.6 r3000_stallクラス

R3000のストールを表すクラス。

r3000_stall::stall_type type(void) const
ストールの種別を参照する。実際の値については`r3000_stall.h'を参照 のこと。

void set(r3000_stall::stall_type)
ストールの値を設定する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.7 r3000_stall_bufferクラス

R3000プロセッサ内での未解決のストールの管理を行うバッファ。ストールの 追加、削除、変更等を行う。入力されたストールはfetch関数によって 優先度順に整列され、内部キューに格納される。格納されているストールの処 理はr3000_integer_unitクラスによって行われる。このクラスは現在 のストールが何であるかという情報だけを管理し、実際のストール解決処理は 行わない。

r3000_stall::stall_type type(void) const
現在処理中のストールの種別を参照する。ストール種別のそれぞれの値につい ては`r3000_stall.h'を参照のこと。

bool is_run_cycle(void) const
プロセッサが実行サイクルにあれば真を返す。ストールバッファの内部キュー にストールが格納されていなければ、プロセッサは実行サイクルにある。既に 入力されたストールがあっても、fetch関数が呼ばれてストールが内部 キューに格納されるまではプロセッサは実行サイクルにある。

bool is_stall_cycle(void) const
プロセッサがストールサイクルにあれば真を返す。

bool is_internal_stall_cycle(void) const
プロセッサがプロセッサ内部に起因するストールサイクルにあれば真を返す。

bool is_external_stall_cycle(void) const
プロセッサがプロセッサ外部に起因するストールサイクルにあれば真を返す。

bool is_buffered(void) const
内部キューに取り込まれていないストール数を参照する。

bool have_next_stall(void) const
現在ストールサイクルにあり、かつ別の未解決のストールがストールバッファ 中に存在すれば真を返す。

void push(r3000_stall::stall_type)
未解決のストールを追加する。追加されたストールはfetch関数によっ て内部キューに格納される。

void pop(void)
キューの先頭のストールを削除する。現在のストール処理が終了した時に用い る。

void streaming_to_instruction_cache_miss_refill(void)
ストリーミングから命令キャッシュミスリフィルサイクルに遷移する。ストリー ミング中に別のストールが発生した場合に使用される。

void change(r3000_stall::stall_type)
先頭のストールを引数で与えられたストールに入れ換える。この関数はキャッ シュミスストールからキャッシュリフィルストールへの遷移などに用いられる。

void fetch(void)
入力されたストールを優先度順に整列させ、内部キューに格納する。

void clear(void)
内部キューを空にする。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.8 r3000_multiply_unitクラス

R3000プロセッサ内の整数乗算器を表すクラス。HIレジスタ、 LO レジスタを持ち、multmultudivdivu命令の処理を行う。演算開始時に演算器の内部変数に演算時間が 設定され、演算が終了するまでレジスタがロックされる。

data_type hi(void) const
HIレジスタを参照する。

data_type lo(void) const
LOレジスタを参照する。

void mult(data_type, data_type)
mult命令を実行する。引数は命令に与えるレジスタの値である。

void multu(data_type, data_type)
multu命令を実行する。引数は命令に与えるレジスタの値である。

void div(data_type, data_type)
div命令を実行する。引数は命令に与えるレジスタの値である。

void divu(data_type, data_type)
divu命令を実行する。引数は命令に与えるレジスタの値である。

void clock(void)
クロックを入力する。

void clear(void)
状態を初期化する。

unsigned int mult_wait(void)
mult命令、multu命令に要する時間のクロック数を返す。

unsigned int div_wait(void)
div命令、divu命令に要する時間のクロック数を返す。

void set_mult_wait(unsigned int)
mult命令、multu命令に要する時間のクロック数を設定する。

void set_div_wait(unsigned int)
div命令、divu命令に要する時間のクロック数を設定する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.9 r3000_bus_interfaceクラス

R3000のバスアクセスのインタフェースを提供するクラス。 bus_port<word_type, word_type>の派生クラスである。 See section 6.3 bus_portクラス.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.10 r3000_directmap_cacheクラス

R3000に接続される1次キャッシュを表すクラス。directmap_cache<word, word>クラスの派生クラスである。See section 7.4 directmap_cacheクラス.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.11 r3000_memory_access_unitクラス

R3000のメモリアクセス処理、キャッシュアクセス処理を行うユニット。整数 演算器からのメモリアクセス要求を受け、それに応じてバスインタフェースを 通じてバスにアクセスし、必要があればキャッシュに値を書き込む。クロック 入力を受けて状態遷移する。

11.11.1 r3000_memory_access_unitクラスの定義  
11.11.2 r3000_memory_access_unitクラスの使い方  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.11.1 r3000_memory_access_unitクラスの定義

void clock_in(void)
クロック入力を行う。このサイクルではバスからプロセッサへの入力のみが行 われる。

void clock_out(void)
クロック出力を行う。このサイクルではプロセッサからバスへの出力のみが行 われる。

void reset(void)
状態を初期化する。

bool is_connected_to_instruction_cache(void) const
命令キャッシュが接続されていれば真を返す。

bool is_connected_to_data_cache(void) const
データキャッシュが接続されていれば真を返す。

void connect_instruction_cache(r3000_directmap_cache&)
命令キャッシュを接続する。

void connect_data_cache(r3000_directmap_cache&)
データキャッシュを接続する。

void disconnect_instruction_cache(void)
命令キャッシュを切り離す。

void disconnect_data_cache(void)
データキャッシュを切り離す。

address_type instruction_read_address(void) const
実行された命令リードのアドレスを返す。

data_type instruction_read_data(void) const
実行された命令リードのデータを返す。

address_type data_read_address(void) const
実行されたデータリードのアドレスを返す。

data_type data_read_data(void) const
実行されたデータリードのデータを返す。

address_type data_write_address(void) const
実行されたデータライトのアドレスを返す。

data_type data_read_data(void) const
実行されたデータライトのデータを返す。

bool instruction_read_is_requested(void) const
命令リード要求が処理されていなければ真を返す。

bool instruction_read_is_ready(void) const
命令リードアクセスが可能な状態であれば真を返す。

bool instruction_read_is_wait(void) const
命令リードアクセスが応答待ち状態であれば真を返す。

bool instruction_read_is_ack(void) const
命令リードアクセスが応答状態であれば真を返す。

bool instruction_read_is_trans(void) const
命令リードアクセスが転送状態であれば真を返す。

bool instruction_read_is_trans_last(void) const
命令リードアクセスが最終転送状態であれば真を返す。

bool data_read_is_requested(void) const
データリード要求が処理されていなければ真を返す。

bool data_read_is_ready(void) const
データリードアクセスが可能な状態であれば真を返す。

bool data_read_is_wait(void) const
データリードアクセスが応答待ち状態であれば真を返す。

bool data_read_is_ack(void) const
データリードアクセスが応答状態であれば真を返す。

bool data_read_is_trans(void) const
データリードアクセスが転送状態であれば真を返す。

bool data_read_is_trans_last(void) const
データリードアクセスが最終転送状態であれば真を返す。

bool data_write_is_requested(void) const
データライト要求が処理されていなければ真を返す。

bool data_write_is_ready(void) const
データライトアクセスが可能な状態であれば真を返す。

bool data_write_is_wait(void) const
データライトアクセスが応答待ち状態であれば真を返す。

bool data_write_is_ack(void) const
データライトアクセスが応答状態であれば真を返す。

bool data_write_is_trans(void) const
データライトアクセスが転送状態であれば真を返す。

bool data_write_is_trans_last(void) const
データライトアクセスが最終転送状態であれば真を返す。

void send_single_instruction_read_request(address_type)
単一命令リードを要求する。引数は命令のアドレスである。

void send_multi_instruction_read_request(address_type)
複数命令リードを要求する。引数は命令のアドレスである。複数命令リードの 転送ワード数は接続された命令キャッシュのラインサイズから求められる。

void send_single_data_read_request(address_type)
単一データリードを要求する。引数はデータのアドレスである。

void send_multi_data_read_request(address_type)
複数データリードを要求する。引数はデータのアドレスである。複数データリー ドの転送ワード数は接続されたデータキャッシュのラインサイズから求められ る。

void send_data_write_request(address_type, data_type)
データライトを要求する。第一引数はデータのアドレス、第二引数はデータの 値である。

bool is_instruction_reading(void) const
命令リード中であれば真を返す。

bool is_data_reading(void) const
データリード中であれば真を返す。

bool is_reading(void) const
リード中であれば真を返す。

bool is_writing(void) const
ライト中であれば真を返す。

bool have_read_request(void) const
リードアクセス中、あるいはリード要求を格納していれば真を返す。

bool is_cacheable(address_type) const
引数で与えられたアドレスがキャッシュ可能なアドレスであれば真を返す。

bool is_cacheable_instruction(address_type) const
命令キャッシュが接続されていて、引数で与えられたアドレスがキャッシュ可 能なアドレスであれば真を返す。

bool is_cacheable_data(address_type) const
データキャッシュが接続されていて、引数で与えられたアドレスがキャッシュ 可能なアドレスであれば真を返す。

bool is_instruction_cache_hit(address_type) const
引数で示される命令が命令キャッシュにヒットすれば真を返す。

bool is_data_cache_hit(address_type) const
引数で示されるデータがデータキャッシュにヒットすれば真を返す。

data_type instruction_cache_read(address_type) const
引数で示される命令を命令キャッシュから読み込む。

data_type data_cache_read(address_type) const
引数で示されるデータをデータキャッシュから読み込む。

void data_cache_write(address_type, data_type) const
データキャッシュに値を書き込む。第一引数にアドレス、第二引数にデータを 取る。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.11.2 r3000_memory_access_unitクラスの使い方

r3000クラスのメモリアクセスは、単一命令リード、複数命令リード、 単一データリード、複数データリード、単一データライトの5種類である。複 数ワードアクセスはキャッシュが使用可能な場合にのみ行われ、転送ワード数 はキャッシュラインサイズに等しい。

以下、データに関するアクセスについてのアクセス方法を示す。命令アクセス についてもアクセス方法は同一である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.12 r3000_write_bufferクラス

R3000のライトバッファを表すクラス。write_bufferクラスの派生クラ スである。バッファサイズの初期値は4である。See section 7.8 write_bufferクラス.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.13 r3000_write_buffer_unitクラス

R3000のライトバッファを操作するユニット。 r3000_memory_access_unit クラスのオブジェクトに接続した状態で使 用され、書き込み要求を自動的にメモリアクセスユニットに送信する。

void push(address_type, data_type)
書き込み要求を送る。第一引数でアドレス、第二引数でデータを指定する。

bool is_full(void) const
ライトバッファが埋まっていれば真を返す。

bool is_empty(void) const
ライトバッファが空であれば真を返す。

bool is_ready(void) const
ライトアクセス中でなければ真を返す。

bool is_busy(void) const
ライトアクセス中であれば真を返す。

bool is_buffered(address_type) const
引数で示されるアドレスへの書き込みがあれば真を返す。

data_type read(address_type) const
引数で示されるアドレスへ書き込む値を参照する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.14 r3000_cp0_register_fileクラス

R3000のCp0コプロセッサの32個のレジスタを格納するレジスタファイルのクラ ス。register_file<r3000_word, c_array<r3000_word, 32>>クラスを 継承している。See section 7.7 register_fileクラス.

static string register_name(int i)
引数で示される番号のレジスタのエイリアス名を参照する。

static int register_number(const string&)
引数で示されるエイリアス名のレジスタの番号を参照する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.15 r3000_cp0クラス


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.16 r3000_integer_unitクラス

R3000内の整数演算器を表す。命令バッファ、レジスタファイル、乗算器、ス トールバッファ、プログラムカウンタを内部に格納し、プロセッサ内の整数演 算全般を取り扱う。メモリアクセスユニット、ライトバッファ、コプロセッサ、 キャッシュは外部から接続する。処理の大半は命令バッファなどの各クラスに よって行われるため、このクラスではそれらの処理の仲介、データの受渡しな どを行う。

状態遷移はclock関数によって行う。この関数は、r3000クラス の外部からのデータ入力と外部へのデータ出力の中間で呼び出されるよう設計 されている。

11.16.1 r3000_integer_unitクラスの定義  
11.16.2 r3000_integer_unitクラスのクロック関数  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.16.1 r3000_integer_unitクラスの定義

data_type register_file(size_t i) const
引数で示されるレジスタ番号のレジスタを参照する。

address_type pc(void) const
プログラムカウンタを参照する。

data_type hi(void) const
HIレジスタを参照する。

data_type lo(void) const
LOレジスタを参照する。

bool is_run_cycle(void) const
実行サイクルであれば真を返す。

bool is_stall_cycle(void) const
ストールサイクルであれば真を返す。

bool is_internal_stall_cycle(void) const
プロセッサがプロセッサ内部に起因するストールサイクルにあれば真を返す。

bool is_external_stall_cycle(void) const
プロセッサがプロセッサ外部に起因するストールサイクルにあれば真を返す。

bool is_streaming(void) const
ストリーミング中であれば真を返す。

void clock(void)
クロック入力を行う。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.16.2 r3000_integer_unitクラスのクロック関数


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.17 r3000クラス

R3000プロセッサを表すクラスである。内部にr3000_bus_interfaceク ラス、r3000_memory_access_unitクラス、 r3000_write_buffer_unitクラス、r3000_integer_unitクラス、 r3000_cp0のオブジェクトを持つ。

プロセッサの実体は、メモリアクセス部はr3000_bus_interfaceクラス、 r3000_memory_access_unitクラス、r3000_write_buffer_unit クラスによって実装されている。また、演算部分は r3000_integer_unitクラス、r3000_cp0クラスなどが担当する。 r3000クラスは外部とのインタフェースだけを提供する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.18 r3000_processing_elementクラス

generic_processing_elementクラスの継承クラスで、R3000プロセッサ によるプロセシングエレメントを表す。See section 8.20 generic_processing_elementクラス.

set_instruction_cache_size(size_type, size_type)
1次命令キャッシュのサイズを指定する。第一引数はキャッシュサイズ、第二 引数はラインサイズである。

set_data_cache_size(size_type, size_type)
1次データキャッシュのサイズを指定する。第一引数はキャッシュサイズ、第 二引数はラインサイズである。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.19 mips_executableクラス

mips--ecoff形式の実行ファイル形式を規定したクラス。mips--ecoff形式のバ イナリファイルをロードする機能を持つ。

void load_header(istream&)
引数で指定されたストリームから、実行バイナリファイルのヘッダ部分を読み 込む。

bool load_body_to_memory(istream&, memory_map_type&)
第一引数で指定されたストリームから、第二引数で指定されたメモリマップに 実行バイナリファイルの本体を読み込む。成功した場合は真を返す。

void disassemble(ostream&, memory_map_type&, address_type, size_type)
第一引数で示されるストリームに、第二引数で示されるメモリマップ上の領域 の内容のディスアセンブル結果を出力する。領域の先頭番地と大きさは第三引 数と第四引数で示されている。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Masaki WAKABAYASHI on September, 3 2003 using texi2html