「命令セット」の編集履歴(バックアップ)一覧はこちら
命令セット - (2007/03/04 (日) 23:42:10) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
**擬似命令
----
|move rd rs|add rd rs r0|
|neg rd rs|sub rd r0 rs|
以下3/03廃止
|li rd Imm|llo rd Lo(Imm)|
||lhi rd Hi(Imm)|
|ll label|llo rd Lo(Address[label])|
||lhi rd Hi(Address[label])|
**命令
----
|ビット表現|アセンブリ|実行内容|
3/03追加(lhi,llo)
||lhi rd Imm|Hi(rd) = Imm|
||llo rd Imm|Lo(rd) = Imm|
3/03追加
||fneg rd rs|rd = -.rs|
|000001(31-26) rs(25-21) rt(20-16) rd(15-11)|add rd rs rt|rd = rs + rt|
|000010(31-26) rs(25-21) rt(20-16) Imm(15-0)|addi rt rs Imm|rt = rs + Imm|
|[001110]|sub rd rs rt|rd = rs - rt|
|[001111]|subi rd rs Imm|rd = rs - Imm|
||mov|rd = rs(addi)|
|[010000](31-26) rs(25-21) rd(20-16) Imm(15-0) |slli rd rs Imm|rd = rs << Imm|
|[010001](31-26) rs(25-21) rd(20-21) Imm(15-0)|lw rs Imm(rd)|rs = mem[rd + Imm](修正しました)|
|[010010](31-26) rs(25-21) rd(20-16) Imm(15-0)|sw rs Imm(rd)|mem[rd + Imm] = rs|
|[100001](31-26) rs(25-21) rt(20-16) rd(15-11)|fadd rd rs rt|rd = rs + rt|
|[100010] [100011] [100100]|fsub fmul fdiv||
||fmov rd rs|rd = rs(結局movと同じ?)|
|001101(31-26)|jr|pc = ra|
|001100(31-26) target(19-0)|jall target|ra = [pc+1]; pc = target|(jalとjallを入れ替えた!?)
|[010011](31-26) (25-21)|jal rs|pc = rs|
|000111(31-26) rs(25-21) rt(20-16)|cmp rs rt|cr = cond[rs - rt]|
|[010100](31-26) rs(25-21) Imm(15-0)|cmpi rs Imm|cr = cond[rs - Imm]|
|000100(31-26) target(19-0)|jl target|pc = target|
|[010101](31-26) rs(25-21)|j rs|pc = rs|
|001000(31-26) target(19-0)|be target|(if [cr = Equal]) pc = target|
|001011(31-26) target(19-0)|bne target|...|
|001001(31-26) target(19-0)|bg target|...|
|001010(31-26) target(19-0)|bl target|...|
|[010110](31-26) target(19-0)|ble target |...|
|[010111](31-26) target(19-0)|bge target|...|
|[100101](31-26) rs(25-21) rt(20-16)|fcmp rs rt|cr = cond[rs - rt]|
|[100110](31-26) target(19-0)|fble target||
|[100111] [101000] [101001]|fbg fbe fbne||
||nop|イラネ|
|000101(31-26) rd(25-21)|led rd|ピカーソ|
|000110(31-26)|STOP||
2/27追加
|jmp(31-26) rd(25-21)|jmp rd|pc = [rd] レジスタを引数に取るジャンプ|
----
**ライブラリ用命令
|tst rd|cr = rd or 0|
|andcc rd Imm rt|rt = rd and Imm;cr will be changed|
|bz||
|bnz||
|[011000](31-26) rd(25-21)|dec rd|rd--|
|[101010](31-26) rd(25-21) rs(20-16)|ftoi rd rs||
|[101011](31-26) rd(25-21) rs(20-16)|itof rd rs||
----
**sparcだとプリミティブな命令
putchar
printf
fprintf
fputc
scanf
cos
sin
atan
floor
|[011001](31-26)|in|外部からの入力|
|[011010](31-26)|out|出力|
----
**擬似命令
----
|move rd rs|add rd rs r0|
|neg rd rs|sub rd r0 rs|
以下3/03廃止
|li rd Imm|llo Lo(rd) Imm|
||lhi Hi(rd) Imm|
|ll label|llo Lo(rd) Address[label]|
||lhi Hi(rd) Address[label]|
**命令
----
|ビット表現|アセンブリ|実行内容|
3/03追加(lhi,llo)
||lhi rd Imm|Hi(rd) = Imm|
||llo rd Imm|Lo(rd) = Imm|
3/03追加
||fneg rd rs|rd = -.rs|
|000001(31-26) rs(25-21) rt(20-16) rd(15-11)|add rd rs rt|rd = rs + rt|
|000010(31-26) rs(25-21) rt(20-16) Imm(15-0)|addi rt rs Imm|rt = rs + Imm|
|[001110]|sub rd rs rt|rd = rs - rt|
|[001111]|subi rd rs Imm|rd = rs - Imm|
||mov|rd = rs(addi)|
|[010000](31-26) rs(25-21) rd(20-16) Imm(15-0) |slli rd rs Imm|rd = rs << Imm|
|[010001](31-26) rs(25-21) rd(20-21) Imm(15-0)|lw rs Imm(rd)|rs = mem[rd + Imm](修正しました)|
|[010010](31-26) rs(25-21) rd(20-16) Imm(15-0)|sw rs Imm(rd)|mem[rd + Imm] = rs|
|[100001](31-26) rs(25-21) rt(20-16) rd(15-11)|fadd rd rs rt|rd = rs + rt|
|[100010] [100011] [100100]|fsub fmul fdiv||
||fmov rd rs|rd = rs(結局movと同じ?)|
|001101(31-26)|jr|pc = ra|
|001100(31-26) target(19-0)|jall target|ra = [pc+1]; pc = target|(jalとjallを入れ替えた!?)
|[010011](31-26) (25-21)|jal rs|pc = rs|
|000111(31-26) rs(25-21) rt(20-16)|cmp rs rt|cr = cond[rs - rt]|
|[010100](31-26) rs(25-21) Imm(15-0)|cmpi rs Imm|cr = cond[rs - Imm]|
|000100(31-26) target(19-0)|jl target|pc = target|
|[010101](31-26) rs(25-21)|j rs|pc = rs|
|001000(31-26) target(19-0)|be target|(if [cr = Equal]) pc = target|
|001011(31-26) target(19-0)|bne target|...|
|001001(31-26) target(19-0)|bg target|...|
|001010(31-26) target(19-0)|bl target|...|
|[010110](31-26) target(19-0)|ble target |...|
|[010111](31-26) target(19-0)|bge target|...|
|[100101](31-26) rs(25-21) rt(20-16)|fcmp rs rt|cr = cond[rs - rt]|
|[100110](31-26) target(19-0)|fble target||
|[100111] [101000] [101001]|fbg fbe fbne||
||nop|イラネ|
|000101(31-26) rd(25-21)|led rd|ピカーソ|
|000110(31-26)|STOP||
2/27追加
|jmp(31-26) rd(25-21)|jmp rd|pc = [rd] レジスタを引数に取るジャンプ|
----
**ライブラリ用命令
|tst rd|cr = rd or 0|
|andcc rd Imm rt|rt = rd and Imm;cr will be changed|
|bz||
|bnz||
|[011000](31-26) rd(25-21)|dec rd|rd--|
|[101010](31-26) rd(25-21) rs(20-16)|ftoi rd rs||
|[101011](31-26) rd(25-21) rs(20-16)|itof rd rs||
----
**sparcだとプリミティブな命令
putchar
printf
fprintf
fputc
scanf
cos
sin
atan
floor
|[011001](31-26)|in|外部からの入力|
|[011010](31-26)|out|出力|
----