Line 248... |
Line 248... |
when "000110" => --06 BLEZ branch=r[rs]<=0;
|
when "000110" => --06 BLEZ branch=r[rs]<=0;
|
a_source := a_from_pc;
|
a_source := a_from_pc;
|
b_source := b_from_immX4;
|
b_source := b_from_immX4;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
pc_source := from_branch;
|
pc_source := from_branch;
|
branch_function := branch_ltz;
|
branch_function := branch_lez;
|
when "000111" => --07 BGTZ branch=r[rs]>0;
|
when "000111" => --07 BGTZ branch=r[rs]>0;
|
a_source := a_from_pc;
|
a_source := a_from_pc;
|
b_source := b_from_immX4;
|
b_source := b_from_immX4;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
pc_source := from_branch;
|
pc_source := from_branch;
|
Line 345... |
Line 345... |
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
rd := rt;
|
rd := rt;
|
c_source := c_from_memory;
|
c_source := c_from_memory;
|
mem_source := mem_read16s; --address=(short)imm+r[rs];
|
mem_source := mem_read16s; --address=(short)imm+r[rs];
|
when "100010" => --22 LWL //fixme
|
when "100010" => --22 LWL //Not Implemented
|
|
a_source := a_from_reg_source;
|
|
b_source := b_from_imm;
|
|
alu_function := alu_add;
|
|
rd := rt;
|
|
c_source := c_from_memory;
|
|
mem_source := mem_read32;
|
when "100011" => --23 LW r[rt]=*(long*)ptr;
|
when "100011" => --23 LW r[rt]=*(long*)ptr;
|
a_source := a_from_reg_source;
|
a_source := a_from_reg_source;
|
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
rd := rt;
|
rd := rt;
|
Line 367... |
Line 373... |
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
rd := rt;
|
rd := rt;
|
c_source := c_from_memory;
|
c_source := c_from_memory;
|
mem_source := mem_read16; --address=(short)imm+r[rs];
|
mem_source := mem_read16; --address=(short)imm+r[rs];
|
when "100110" => --26 LWR //fixme
|
when "100110" => --26 LWR //Not Implemented
|
when "101000" => --28 SB *(char*)ptr=(char)r[rt];
|
when "101000" => --28 SB *(char*)ptr=(char)r[rt];
|
a_source := a_from_reg_source;
|
a_source := a_from_reg_source;
|
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
mem_source := mem_write8; --address=(short)imm+r[rs];
|
mem_source := mem_write8; --address=(short)imm+r[rs];
|
when "101001" => --29 SH *(short*)ptr=(short)r[rt];
|
when "101001" => --29 SH *(short*)ptr=(short)r[rt];
|
a_source := a_from_reg_source;
|
a_source := a_from_reg_source;
|
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
mem_source := mem_write16;
|
mem_source := mem_write16;
|
when "101010" => --2a SWL //fixme
|
when "101010" => --2a SWL //Not Implemented
|
|
a_source := a_from_reg_source;
|
|
b_source := b_from_imm;
|
|
alu_function := alu_add;
|
|
mem_source := mem_write32; --address=(short)imm+r[rs];
|
when "101011" => --2b SW *(long*)ptr=r[rt];
|
when "101011" => --2b SW *(long*)ptr=r[rt];
|
a_source := a_from_reg_source;
|
a_source := a_from_reg_source;
|
b_source := b_from_imm;
|
b_source := b_from_imm;
|
alu_function := alu_add;
|
alu_function := alu_add;
|
mem_source := mem_write32; --address=(short)imm+r[rs];
|
mem_source := mem_write32; --address=(short)imm+r[rs];
|
when "101110" => --2e SWR //fixme
|
when "101110" => --2e SWR //Not Implemented
|
when "101111" => --2f CACHE
|
when "101111" => --2f CACHE
|
when "110000" => --30 LL r[rt]=*(long*)ptr;
|
when "110000" => --30 LL r[rt]=*(long*)ptr;
|
when "110001" => --31 LWC1
|
when "110001" => --31 LWC1
|
when "110010" => --32 LWC2
|
when "110010" => --32 LWC2
|
when "110011" => --33 LWC3
|
when "110011" => --33 LWC3
|