打造自己的虛擬機器 指令集

2022-02-26 19:24:39 字數 2572 閱讀 2197

opcode55

511cpu指令集

算術運算指令

整數運算指令(7)

000000

rsrt

rd保留

add rs,rt,rd

000001

rsrt

immaddi,rs,rt,imm

000010

rsrt

rd保留

sub rs,rt,rd

000011

rsrt

immsubi,rs,rt,imm

000100

rsrt

rd保留

mul rs,rt,rd

000101

rsrt

rd保留

div rs,rt,rd

000110

rsrt

rd保留

mod rs,rt,rd

浮點數運算指令(4)

000111

rsrt

rd保留

fadd rs,rt,rd

001000

rsrt

rd保留

fsub rs,rt,rd

001001

rsrt

rd保留

fmul rs,rt,rd

001010

rsrt

rd保留

fdiv rs,rt,rd

邏輯運算指令(9)

001011

rsrt

rd保留

and rs,rt,rd

001100

rsrt

rd保留

or rs,rt,rd

001101

rsrt

保留保留

not rs,rt

001110

rsrt

rd保留

xor rs,rt,rd

001111

rsrt

immandi rs,rt,imm

010000

rsrt

immori rs,rt,imm

010001

rsrt

immxori rs,rt,imm

010010

rsrt

shamt

sll rs,rd,shamt

010011

rsrt

shamt

slr rs,rd,shamt

比較轉移指令(7)

010100

rsrt

lable

less rs,rt,lable

010101

rsrt

lable

great rs,rt,lable

010110

rsrt

lable

lessu rs,rt,lable

010111

rsrt

lable

greatu rs,rt,lable

011000

rsrt

lable

equal rs,rt,lable

011001

rsrt

lable

uequal rs,rt,lable

011010

rs保留

jmp rs

資料傳輸指令(10)

011011

rsrt

mov rs,rt

011100

rsrt

rd保留

lword rs,rt,rd

011101

rsrt

rd保留

sword rs,rt,rd

011110

rsrt

rd保留

lhalf rs,rt,rd

011111

rsrt

rd保留

shalf rs,rt,rd

100000

rsrt

rd保留

lbyte rs,rt,rd

100001

rsrt

rd保留

sbyte rs,rt,rd

100010

rs保留

immlui rs,imm

100011

f1rt

rd保留

ldouble $f1,$r2,$r3

100100

f1rt

rd保留

sdouble $f1,$r2,$r3

系統指令(5)

100101

rs保留

call rs

100110

保留ret

100111

rs保留

push rs

101000

rs保留

pop rs

101001

保留halt

101010

immint imm

101011

保留iret

101100

switch

偽指令load rs,imm

指令生成 指令資料結構及虛擬機器指令集

這裡要說的指令,並不是x86體系結構下的機器指令,而是虛擬機器指令。jerry虛擬機器的設計並不是非常複雜 甚至看起來很不靈活 它是乙個棧式虛擬機器,不包括任何暫存器 除了指令計數器之外 所有的指令都是基於棧進行的。在文章最後將給出完整的指令集。現在先給出指令資料結構,它們包括 typedef en...

虛擬機器 指令寫出

是的,還有幾個節點的指令生成沒有測試呢,包括流控制語句,io.不過呢,流控制是相對比較容易優化的,進行 生成指令再對比 的測試不太好維護,而 io 指令很簡單 所以要不這樣,把指令寫出來,然後開個虛擬機器執行,如果執行沒問題就算測試通過了.一些常見的語義錯誤處理在之前的之前的內容中都以注釋形式出現,...

Thumb指令集與ARM指令集的區別

thumb指令集 thumb指令可以看做是arm指令壓縮形式的子集,是針對 密度的問題而提出的,它具有16為的 密度。thumb不是乙個完整的體系結構,不能指望處理程式只執行thumb指令而不支援arm指令集。因此,thumb指令只需要支援通用功能,必要時,可借助完善的arm指令集,例如 所有異常自...