Virtual machine definition


Document formatted by vherva at Fri Apr 24 11:23:52 1998 on the host schemestation. This document is produced by the SchemeStation project during the Tik-76.115 course.

  1. Introduction
  2. Registers
  3. Instructions
    1. Heap
      1. ALLOC-INTEGER Rdest
      2. ALLOC-FLOAT Rdest
      3. ALLOC-BOOLEAN Rdest
      4. ALLOC-PAIR Rdest
      5. ALLOC-PAIR-TAGGED Rdest, tag
      6. ALLOC-VECTOR Rdest, Rsize
      7. ALLOC-VECTOR-IMMEDIATE Rdest, size
      8. ALLOC-VECTOR-TAGGED Rdest, Rsize, tag
      9. ALLOC-SHARED-BIT-STRING Rdest, Rsize
      10. ALLOC-SHARED-BIT-STRING-TAGGED Rdest, Rsize, tag
      11. ALLOC-PRIVATE-BIT-STRING Rdest, Rsize
      12. ALLOC-PRIVATE-BIT-STRING-TAGGED Rdest, Rsize, tag
      13. INTEGER-SET! Rdest, Rvalue
      14. FLOAT-SET! Rdest, Rvalue
      15. BOOLEAN-SET! Rdest, Rvalue
      16. PAIR-SET-CAR! Rdest, Rsource
      17. PAIR-SET-CDR! Rdest, Rsource
      18. PAIR-GET-CAR Rdest, Rsource
      19. PAIR-GET-CAR-OR-BLOCK Rdest, Rsource
      20. PAIR-GET-CDR Rdest, Rsource
      21. VECTOR-SET! Rdest, Rindex, Rvalue
      22. VECTOR-GET Rdest, Rsource, Rindex
      23. VECTOR-LEN Rdest, Rsource
      24. COPY-PAIR Rdest, Rsource
      25. COPY-VECTOR Rdest, Rsource
      26. COPY-BIT-STRING Rdest, Rsource
      27. CONS Rdest, Rcar, Rcdr
    2. Register
      1. MOVE Rdest, Rsource
      2. LOAD-IMMED Rdest, index
      3. LOAD-NULL Rdest
    3. Arithmetic
      1. INT-ADD Rdest, Rfirst, Rsecond
      2. INT-SUB Rdest, Rfirst, Rsecond
      3. INT-MUL Rdest, Rfirst, Rsecond
      4. INT-DIV Rdest, Rfirst, Rsecond
      5. INT-MOD Rdest, Rfirst, Rsecond
      6. INT-REM Rdest, Rfirst, Rsecond
      7. FLOAT-ADD Rdest, Rfirst, Rsecond
      8. FLOAT-SUB Rdest, Rfirst, Rsecond
      9. FLOAT-MUL Rdest, Rfirst, Rsecond
      10. FLOAT-DIV Rdest, Rfirst, Rsecond
      11. FLOAT-MOD Rdest, Rfirst, Rsecond
      12. FLOAT-REM Rdest, Rfirst, Rsecond
      13. FLOAT-LOG Rdest, Rsource
      14. FLOAT-LOG10 Rdest, Rsource
      15. FLOAT-EXP Rdest, Rsource
      16. FLOAT-SQRT Rdest, Rsource
    4. Bit level
      1. SHR Rdest, Rtarget, Ramount
      2. SHL Rdest, Rtarget, Ramount
      3. AND Rdest, Rone, Rother
      4. OR Rdest, Rone, Rother
      5. XOR Rdest, Rone, Rother
      6. NEG Rdest, Rsource
      7. ROR Rdest, Rtarget, Ramount
      8. ROL Rdest, Rtarget, Ramount
    5. Logical
      1. LAND Rdest, Rone, Rother
      2. LOR Rdest, Rone, Rother
      3. NOT Rdest, Rsource
      4. BOOLEAN-NOT Rdest, Rsource
    6. Control
      1. HALT
      2. JUMP Rtarget
      3. JUMPI target
      4. BRANCH Rtarget, Rcondition
      5. BRANCHI Rcondition, offset
      6. NOP
    7. Stack
      1. PUSH Rstack, Rsource
      2. POP Rstack, Rdest
      3. SAVE Rstack, Rbitmask
      4. RESTORE Rstack, Rbitmask
    8. Type conversion
      1. INT-TO-FLOAT Rdest, Rsource
      2. FLOAT-TO-INT Rdest, Rsource
      3. INT-TO-BIT-STRING Rdest, Rsource, Rlen
      4. BIT-STRING-TO-INT Rdest, Rsource, Rlen
    9. Tests
      1. EQ? Rdest, Rone, Rother
      2. IS-OF-BOOLEAN? Rdest, Rsource
      3. IS-OF-INTEGER? Rdest, Rsource
      4. IS-OF-FLOAT? Rdest, Rsource
      5. IS-OF-PAIR? Rdest, Rsource
      6. IS-OF-PAIR-TAGGED? Rdest, Rsource
      7. IS-OF-VECTOR? Rdest, Rsource
      8. IS-OF-VECTOR-TAGGED? Rdest, Rsource
      9. IS-OF-PRIVATE-BIT-STRING? Rdest, Rsource
      10. IS-OF-PRIVATE-BIT-STRING-TAGGED? Rdest, Rsource
      11. IS-OF-SHARED-BIT-STRING? Rdest, Rsource
      12. IS-OF-SHARED-BIT-STRING-TAGGED? Rdest, Rsource
      13. IS-OF-PROCEDURE? Rdest, Rsource
      14. IS-OF-ACTOR-ADDRESS? Rdest, Rsource
      15. IS-OF-BYTE-CODE? Rdest, Rsource
      16. INT-CMP Rdest, Rfirst, Rsecond
      17. FLOAT-CMP Rdest, Rfirst, Rsecond
      18. INT-GE Rdest, Rfirst, Rsecond
      19. FLOAT-GE Rdest, Rfirst, Rsecond
      20. TAG-CMP Rdest, Rtarget, tag
    10. Bit string
      1. GET-SUBSTRING Rdest, Rsource, Roffset, Rlength
      2. SET-SUBSTRING Rdest, Rsource, Roffset
    11. Special
      1. CREATE-PROCEDURE Rdest, Raddress, Renv
      2. CREATE-PROCEDURE-IMMEDIATE Rdest, Renv, address
      3. GET-ADDRESS Rdest, Rprocedure
      4. GET-ENV Rdest, Rprocedure
      5. SEND-MSG Raddr, Rmsg
      6. SET-EXCEPTION-HANDLER Rsource
      7. IMM-EXTEND offset
  4. Exceptions and messages
    1. Exception handling
    2. Exception types
      1. MESSAGE
      2. MATH-OVERFLOW
      3. MATH-UNDERFLOW
      4. MATH-DOMAIN
      5. MATH-RANGE
      6. MATH-DIVZERO
      7. INVALID-ADDRESS
      8. INVALID-REFERENCE
      9. INVALID-INSTRUCTION
  5. Types and type tags
  6. Binary representation of instructions
    1. A proposal
      1. Basic instruction format
      2. Instruction with register operands

© SchemeStation project 1997-1998 [Back to the document index]