DVD-Video 解谜 - Virtual Machine coding - Instruction Set by value

来源:互联网 发布:icmp使用的端口 编辑:程序博客网 时间:2024/05/27 20:50

Virtual Machine Instruction Set - broken down by value

0 1 2 3 4 5 6 7 <- Byte 7-5 4 3-0 7 6-4 3-0 7-4 3-0 7-0 7-0 7-0 7-4 3-2 1-0 7-0 <- Bits Type Direct SET Dir Cmp CMP CMD operand 1 operand 2 operand 3 Mnemonic Operands 0     X 0 0       NOP   0     X 0 1       line# Goto line# 0     X 0 2       Break   0     X 0 3     0 lvl line# SetTmpPML lvl, line# 0     0 1-7 0-3   cr1*   cr2* as above Cplus above reg(cr1) cmp-op reg(cr2) plus above 0     1 1-7 0-3   cr1* cval as above Cplus above reg(cr1) cmp-op #cval plus above 0 X X X X 4-F X X X invalid   1 0   X 0 0       NOP   1 0   X 0 1     Link subset Link subset   1 0   X 0 4     pgcn LinkPGCN pgcn 1 0   X 0 5     hl_bn pttn LinkPTTN pttn [,button=hl_bn] 1 0   X 0 6     hl_bn 0 pgn LinkPGN pgn [,button=hl_bn] 1 0   X 0 7     hl_bn 0 cn LinkCN cn [,button=hl_bn] 1 0   0 1-7 0, 1, 4-7   cr1*   cr2* as above Cplus above reg(cr1) cmp-op reg(cr2) plus above 1 0   1 1-7 0, 1, 4-7   cr1* cval as above Cplus above reg(cr1) cmp-op #cval plus above 1 0 X X X 2, 3, 8-F X X X invalid   1 1   X 0 0       NOP   1 1   X 0 1       Exit   1 1   X 0 2     ttn   JumpTT ttn 1 1   X 0 3     ttn   JumpVTS_TT ttn 1 1   X 0 5   pttn   ttn   JumpVTS_PTT ttn pttn 1 1   X 0 6     0     JumpSS FP 1 1   X 0 6     1   menu   JumpSS VMGM menu 1 1   X 0 6   ttn vts 2   menu   JumpSS VTSM vts, ttn, menu 1 1   X 0 6 pgcn   3     JumpSS VMGM pgcn 1 1   X 0 8   rsm_cell 0     CallSS FP [rsm_cell] 1 1   X 0 8   rsm_cell 1   menu   CallSS VMGM menu [, rsm_cell] 1 1   X 0 8   rsm_cell 2   menu   CallSS VTSM menu [, rsm_cell] 1 1   X 0 8 pgcn rsm_cell 3     CallSS VMGM pgcn [, rsm_cell] 1 1     1-7 0-3, 5, 6, 8 as above as above cr1* cr2* Cplus above reg(cr1) cmp-op reg(cr2) plus above 1 1 X X X 4, 7, 9-F X X X invalid   2 X 0 X 0 0       NOP   2 0 1 X 0 0   af   sr1 sf   sr2 nf   sr3   SetSTN if(af) Audio = Gsr1
if(sf) Subpicture = Gsr2
if(nf) Angle = Gsr3 2 0 2 X 0 0   srs pgcn   SetNVTMR Gsrs, pgcn 2 0 3 X 0 0   srs   mf   srd   SetGPRMMD Gsrd = Gsrs [,COUNTER](mf=1) 2 0 4 X 0 0     srs   SetAMXMD Gsrs 2 0 6 X 0 0     srs   SetHL_BTNN Gsrs 2 1 1 X 0 0   af aval sf sval nf nval   SetSTN if(af) Audio = #aval
if(sf) Subpicture = #sval
if(nf) Angle = #nval 2 1 2 X 0 0 sval pgcn   SetNVTMR #sval, pgcn 2 1 3 X 0 0 sval   mf   srd   SetGPRMMD Gsrd = #sval [,COUNTER](mf=1) 2 1 4 X 0 0   sval   SetAMXMD #sval 2 1 6 X 0 0   sval   SetHL_BTNN #sval 2 as above as above   1-7 0 as above as above cr1* cr2* Cplus above reg(cr1) cmp-op reg(cr2) plus above 2 as above as above X 0 1, 4-7 as above as above as per link as above // as per link as above // as per link 2 X 7-F X X X X X X
invalid SetSystem
2 X X X 0 2, 3, 8-F X X X
invalid Link
2 X X X 1-7 1-F X X X
illegal - CMP & LNK conflict
3 X 0 X 0 0       NOP   3 0 1-B X 0 0   srd   srs*   Set Gsrd set-op reg(srs) 3 1 1-B X 0 0   srd sval   Set Gsrd set-op #sval 3 as above as above 0 1-7 0 cr1* as above as above   cr2* Cplus above reg(cr1) cmp-op reg(cr2), plus above 3 as above as above 1 1-7 0 cr1* as above as above cval Cplus above reg(cr1) cmp-op #cval, plus above 3 as above as above X 0 1, 4-7 as above as above as per link as above // as per link as above // as per link 3 X C-F X X X X X X
invalid Set
3 X X X 0 2, 3, 8-F X X X
invalid Link
3 X X X 1-7 1-F X X X
illegal - CMP & LNK conflict
4 X 0 X 0 X     X   00 NOP   4 0 1-B X 0 srd   srs*   X   00 Set Gsrd set-op reg(srs) 4 1 1-B X 0 srd sval   X   00 Set Gsrd set-op #sval 4 X 0 X 0       hl_bn   01-1F Lnk [button=hl_bn] 4 0 1-B X 0 srd   srs*   hl_bn   01-1F SetLnk Gsrd set-op reg(srs) [, button=hl_bn] 4 1 1-B X 0 srd sval   hl_bn   01-1F SetLnk Gsrd set-op #sval [, button=hl_bn] 4 X 0 0 1-7 cr1     cr2* hl_bn   01-1F CmpLnk Gcr1 cmp-op reg(cr2) [, button=hl_bn] 4 X 0 1 1-7 cr1   cval hl_bn   01-1F CmpLnk Gcr1 cmp-op #cval [, button=hl_bn] 4 0 1-B 0 1-7 srd   srs*   cr2* hl_bn   01-1F SetCLnk Gsrd set-op reg(srs), Gsrd cmp-op reg(cr2) [, button=hl_bn] 4 0 1-B 1 1-7 srd   srs* cval hl_bn   01-1F SetCLnk Gsrd set-op reg(srs), Gsrd cmp-op #cval [, button=hl_bn] 4 1 1-B 0 1-7 srd sval   cr2* hl_bn   01-1F SetCLnk Gsrd set-op #sval, Gsrd cmp-op reg(cr2) [, button=hl_bn] 4 1 1-B 1 1-7 srd sval cval hl_bn   01-1F SetCLnk Gsrd set-op #sval, Gsrd cmp-op #cval [, button=hl_bn] 5, 6 X 0 X 0 X     X   00 NOP   5, 6 0 1-B X 0 srd srs*     X   00 Set Gsrd set-op reg(srs) 5, 6 1 1-B X 0 srd sval   X   00 Set Gsrd set-op #sval 5, 6 X 0 X 0       hl_bn   01-1F Lnk [button=hl_bn] 5, 6 0 1-B X 0 srd srs*     hl_bn   01-1F SetLnk Gsrd set-op reg(srs) [, button=hl_bn] 5, 6 1 1-B X 0 srd sval   hl_bn   01-1F SetLnk Gsrd set-op #sval [, button=hl_bn] 5, 6 0 0 0 1-7     cr1*   cr2* hl_bn   01-1F CmpLnk reg(cr1) cmp-op reg(cr2) [, button=hl_bn] 5, 6 0 0 1 1-7     cr1* cval hl_bn   01-1F CmpLnk reg(cr1) cmp-op #cval [, button=hl_bn] 5, 6 1 0 X 1-7     cr1* cr2* hl_bn   01-1F CmpLnk reg(cr1) cmp-op reg(cr2) [, button=hl_bn] 5, 6 0 1-B 0 1-7 srd srs* cr1*   cr2* X   00 CmpSet reg(cr1) cmp-op reg(cr2), Gsrd set-op reg(srs) 5, 6 0 1-B 1 1-7 srd srs* cr1* cval X   00 CmpSet reg(cr1) cmp-op #cval, Gsrd set-op reg(srs) 5, 6 1 1-B X 1-7 srd sval cr1* cr2* X   00 CmpSet reg(cr1) cmp-op reg(cr2), Gsrd set-op #sval 5 0 1-B 0 1-7 srd srs* cr1*   cr2* hl_bn   01-1F CSetCLnk reg(cr1) cmp-op reg(cr2), Gsrd set-op reg(srs) [, button=hl_bn] 5 0 1-B 1 1-7 srd srs* cr1* cval hl_bn   01-1F CSetCLnk reg(cr1) cmp-op #cval, Gsrd set-op reg(srs) [, button=hl_bn] 5 1 1-B X 1-7 srd sval cr1* cr2* hl_bn   01-1F CSetCLnk reg(cr1) cmp-op reg(cr2), Gsrd set-op #sval [, button=hl_bn] 6 0 1-B 0 1-7 srd srs* cr1*   cr2* hl_bn   01-1F CmpSetLnk reg(cr1) cmp-op reg(cr2), Gsrd set-op reg(srs) [, button=hl_bn] 6 0 1-B 1 1-7 srd srs* cr1* cval hl_bn   01-1F CmpSetLnk reg(cr1) cmp-op #cval, Gsrd set-op reg(srs) [, button=hl_bn] 6 1 1-B X 1-7 srd sval cr1* cr2* hl_bn   01-1F CmpSetLnk reg(cr1) cmp-op reg(cr2), Gsrd set-op #sval [, button=hl_bn] 4, 5, 6 X C-F X X X X X X
invalid Set
7           unknown   * register values 0-15 (0x00 - 0x0f) refer to General Purpose registers (GPRM), 16-127 (0x10 - 0x7f) are invalid, 128-151 (0x80 - 0x97) refer to 152-255 (0x98 - 0xff) are invalid.

SET and CMP operations

Code 0 1 2 3 4 5 6 7 8 9 a b SET op none mov
= swp
<-> add
+= sub
-= mul
*= div
/= mod
%= rnd
  and
&= or
|= xor
^= CMP op none BC
& EQ
== NE
!= GE
>= GT
> LE
<= LT
<  

Link subset codes

6 7 <- Byte 7-2 1-0 7-5 4-0 <- Bits operand 3 Mnemonic Operands hl_bn   00 LinkNoLink [button=hl_bn] hl_bn   01 LinkTopCell [button=hl_bn] hl_bn   02 LinkNextCell [button=hl_bn] hl_bn   03 LinkPrevCell [button=hl_bn] hl_bn   05 LinkTopPG [button=hl_bn] hl_bn   06 LinkNextPG [button=hl_bn] hl_bn   07 LinkPrevPG [button=hl_bn] hl_bn   09 LinkTopPGC [button=hl_bn] hl_bn   0a LinkNextPGC [button=hl_bn] hl_bn   0b LinkPrevPGC [button=hl_bn] hl_bn   0c LinkGoupPGC [button=hl_bn] hl_bn   0d LinkTailPGC [button=hl_bn] hl_bn   10 RSM [button=hl_bn] X X 04, 08, 0E, 0F, 11-1F invalid    System Parameter registers (SPRM),