命令セット

「命令セット」の編集履歴(バックアップ)一覧はこちら

命令セット - (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|出力| ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。