Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cybiko:bytecodeinstructionset [2009/11/27 17:54] (current)
Line 1: Line 1:
 +======Cybiko ByteCode Instruction Set======
 +by Jeff Frohwein, v1.0127\\
 +Some contributions by Robert Ang.
  
 +Text file download of the byte codes - {{bytecode.txt|Bytecode Instruction Set}}
 +
 +<​code>​
 +* Indicates predicted, but not observed, instructions.
 +
 + For all of the following, zz = xx + yy.
 +
 +00              seteq
 +01              setne
 +02              setlt
 +03              setle
 +04              setgt
 +05              setge
 +06              switch
 +07 xx           ​jump.c xx
 +08 xx           ​jumpz.c xx
 +09 xx           ​jumpnz.c xx
 +0a xx xx        calln.s ?
 +0b             ​*calli
 +0c xx           ​callx.b ?
 +0d xx xx        calls12.w ?
 +0e xx xx        calls3.w ?
 +0f              retf
 +10              retn
 +11 xx           ​retn.c xx
 +12 xx           ​stack.c xx
 +13              push
 +14              pop
 +15              move
 +16 xx           ​load.c xx
 +17 x1 x2        load.s x1x2
 +18 zz           ​leal.b xx yy
 +19 ?           ​*leat.b
 +1a xx xx        leag.u ? 0
 +1b              loadic
 +1c              loadis
 +1d              loadil
 +1e              storeic
 +1f              storeis
 +20              storeil
 +21 zz           ​loadlc.b xx yy
 +22 zz           ​loadls.b xx yy
 +23 zz           ​loadll.b xx yy
 +24 ?           ​*loadtc.b
 +25 ?           ​*loadts.b
 +26 ?           ​*loadtl.b
 +27 zz           ​storelc.b xx yy
 +28 zz           ​storels.b xx yy
 +29 zz           ​storell.b xx yy
 +2a ?           ​*storetc.b
 +2b ?           ​*storets.b
 +2c ?           ​*storetl.b
 +2d              inc1
 +2e              inc2
 +2f              inc4
 +30              dec1
 +31              dec2
 +32              dec4
 +33              lshift1
 +34              lshift2
 +35              rshift1
 +36              rshift2
 +37              add
 +38              sub
 +39              neg
 +3a              mul
 +3b              div
 +3c              mod
 +3d              and
 +3e              or
 +3f              xor
 +40 x1 x2        jump.s x1x2
 +41 x1 x2        jumpz.s x1x2
 +42 x1 x2        jumpnz.s x1x2
 +43              load0
 +44              load1
 +45 x1 x2 x3 x4  load.l x1x2x3x4
 +46 xx           add.c xx
 +47 x1 x2        add.s x1x2
 +48 x1 x2 x3 x4  add.l x1x2x3x4
 +49 xx           ​cmpe.c xx
 +4a x1 x2        cmpe.s x1x2
 +4b x1 x2 x3 x4  cmpe.l x1x2x3x4
 +4c xx xx/x3 x4  calld12.w ? / .disp x3x4
 +4d xx xx/x3 x4  calld3.w ?  / .disp x3x4
 +4e              setz
 +4f              setnz
 +50              cwd
 +51              cbd
 +52 xx xx        loadgc.u ? 0
 +53 xx xx        loadgs.u ? 0
 +54 xx xx        loadgl.u ? 0
 +55 xx xx        storegc.u ? 0
 +56 xx xx        storegs.u ? 0
 +57 xx xx        storegl.u ? 0
 +58              load0p
 +59              load1p
 +5a xx           ​loadp.c xx
 +5b x1 x2        loadp.s x1x2
 +5c x1 x2 x3 x4  loadp.l x1x2x3x4
 +5d zz           ​lealp.b xx yy
 +5e ?           ​*leatp.b
 +5f xx xx        leagp.u ? 0
 +60              loadicp
 +61              loadisp
 +62              loadilp
 +63 zz           ​loadlcp.b xx yy
 +64 zz           ​loadlsp.b xx yy
 +65 zz           ​loadllp.b xx yy
 +66 ?           ​*loadtcp.b
 +67 ?           ​*loadtsp.b
 +68 ?           ​*loadtlp.b
 +69 xx xx       ​*loadgcp.u ? 0
 +6a xx xx        loadgsp.u ? 0
 +6b xx xx        loadglp.u ? 0
 +6c              load0m
 +6d              load1m
 +6e xx           ​loadm.c xx
 +6f x1 x2        loadm.s x1x2
 +70 x1 x2 x3 x4 *loadm.l x1x2x3x4
 +71 zz           ​lealm.b xx yy
 +72 ?           ​*leatm.b
 +73 xx xx        leagm.u ? 0
 +74             ​*loadicm
 +75              loadism
 +76              loadilm
 +77 zz          *loadlcm.b xx yy
 +78 zz           ​loadlsm.b xx yy
 +79 zz           ​loadllm.b xx yy
 +7a ?           ​*loadtcm.b
 +7b ?           ​*loadtsm.b
 +7c ?           ​*loadtlm.b
 +7d xx xx        loadgcm.u ? 0
 +7e xx xx        loadgsm.u ? 0
 +7f xx xx        loadglm.u ? 0
 +80 xx xx        leas.w ?
 +81 xx xx/x3 x4  lead.w ? / .disp x3x4
 +</​code>​
 +
 +=====Added with bytecode v11=====
 +<​code>​
 +83              decic1
 +84              incic1
 +85              decis1
 +86              incis1
 +87              decil1
 +88              incil1
 +89              popadd
 +</​code>​
 +
 +
 +
 +=====Added with bytecode v12=====
 +<​code>​
 +8a x1x2 x3x4.. *patch
 +8b xx          *loadic.b xx
 +8c xx           ​loadis.b xx
 +8d xx           ​loadil.b xx
 +8e xx           mul.c xx
 +8f xx           ​muladd.c xx
 +90 xx           ​jumple.c xx
 +91 xx           ​jumpge.c xx
 +</​code>​
 +{{tag>​cybiko}}