home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mitsch75.zip / scheme-7_5_17-src.zip / scheme-7.5.17 / src / compiler / rtlbase / rtlty1.scm < prev    next >
Text File  |  1999-01-02  |  7KB  |  191 lines

  1. #| -*-Scheme-*-
  2.  
  3. $Id: rtlty1.scm,v 4.23 1999/01/02 06:06:43 cph Exp $
  4.  
  5. Copyright (c) 1987-1999 Massachusetts Institute of Technology
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or (at
  10. your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful, but
  13. WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15. General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20. |#
  21.  
  22. ;;;; Register Transfer Language Type Definitions
  23. ;;; package: (compiler)
  24.  
  25. (declare (usual-integrations))
  26.  
  27. ;;; These three lists will be filled in by the type definitions that
  28. ;;; follow.  See those macros for details.
  29. (define rtl:expression-types '())
  30. (define rtl:statement-types '())
  31. (define rtl:predicate-types '())
  32.  
  33. (define-rtl-expression register % number)
  34.  
  35. ;;; Scheme object
  36. (define-rtl-expression constant % value)
  37.  
  38. ;;; Memory references that return Scheme objects
  39. (define-rtl-expression offset rtl: base offset)
  40. (define-rtl-expression pre-increment rtl: register number)
  41. (define-rtl-expression post-increment rtl: register number)
  42.  
  43. ;;; Memory reference that returns ASCII integer
  44. (define-rtl-expression byte-offset rtl: base offset)
  45. ;;; Memory reference that returns a floating-point number
  46. (define-rtl-expression float-offset rtl: base offset)
  47.  
  48. ;;; Generic arithmetic operations on Scheme number objects
  49. ;;; (define-rtl-expression generic-unary rtl: operator operand)
  50. ;;; (define-rtl-expression generic-binary rtl: operator operand-1 operand-2)
  51.  
  52. ;;; Code addresses
  53. (define-rtl-expression entry:continuation rtl: continuation)
  54. (define-rtl-expression entry:procedure rtl: procedure)
  55.  
  56. ;;; Allocating a closure object (returns its address)
  57. (define-rtl-expression cons-closure rtl: entry min max size)
  58. ;;; Allocating a multi-closure object
  59. ;;; (returns the address of first entry point)
  60. (define-rtl-expression cons-multiclosure rtl: nentries size entries)
  61.  
  62. ;;; Cache addresses
  63. (define-rtl-expression assignment-cache rtl: name)
  64. (define-rtl-expression variable-cache rtl: name)
  65.  
  66. ;;; Get the address of a Scheme object
  67. (define-rtl-expression object->address rtl: expression)
  68.  
  69. ;;; Convert between a datum and an address
  70. ;;; (define-rtl-expression datum->address rtl: expression)
  71. ;;; (define-rtl-expression address->datum rtl: expression)
  72.  
  73. ;;; Add a constant offset to an address
  74. (define-rtl-expression offset-address rtl: base offset)
  75. (define-rtl-expression byte-offset-address rtl: base offset)
  76. (define-rtl-expression float-offset-address rtl: base offset)
  77.  
  78. ;;; A machine constant (an integer, usually unsigned)
  79. (define-rtl-expression machine-constant rtl: value)
  80.  
  81. ;;; Destructuring Scheme objects
  82. (define-rtl-expression object->datum rtl: expression)
  83. (define-rtl-expression object->type rtl: expression)
  84. (define-rtl-expression cons-pointer rtl: type datum)
  85. (define-rtl-expression cons-non-pointer rtl: type datum)
  86.  
  87. ;;; Convert a character object to an ASCII machine integer
  88. (define-rtl-expression char->ascii rtl: expression)
  89.  
  90. ;;; Conversion between fixnum objects and machine integers
  91. (define-rtl-expression object->fixnum rtl: expression)
  92. (define-rtl-expression object->unsigned-fixnum rtl: expression)
  93. (define-rtl-expression fixnum->object rtl: expression)
  94.  
  95. ;;; Conversion between machine integers and addresses
  96. (define-rtl-expression fixnum->address rtl: expression)
  97. (define-rtl-expression address->fixnum rtl: expression)
  98.  
  99. ;;; Machine integer arithmetic operations
  100. (define-rtl-expression fixnum-1-arg rtl:
  101.   operator operand overflow?)
  102. (define-rtl-expression fixnum-2-args rtl:
  103.   operator operand-1 operand-2 overflow?)
  104.  
  105. ;;; Conversion between flonums and machine floats
  106. (define-rtl-expression float->object rtl: expression)
  107. (define-rtl-expression object->float rtl: expression)
  108.  
  109. ;;; Floating-point arithmetic operations
  110. (define-rtl-expression flonum-1-arg rtl:
  111.   operator operand overflow?)
  112. (define-rtl-expression flonum-2-args rtl:
  113.   operator operand-1 operand-2 overflow?)
  114.  
  115. (define-rtl-predicate fixnum-pred-1-arg %
  116.   predicate operand)
  117. (define-rtl-predicate fixnum-pred-2-args %
  118.   predicate operand-1 operand-2)
  119.  
  120. (define-rtl-predicate flonum-pred-1-arg %
  121.   predicate operand)
  122. (define-rtl-predicate flonum-pred-2-args %
  123.   predicate operand-1 operand-2)
  124.  
  125. (define-rtl-predicate eq-test % expression-1 expression-2)
  126. (define-rtl-predicate type-test % expression type)
  127.  
  128. ;; General predicates
  129. (define-rtl-predicate pred-1-arg % predicate operand)
  130. (define-rtl-predicate pred-2-args % predicate operand-1 operand-2)
  131.  
  132. (define-rtl-predicate overflow-test rtl:)
  133.  
  134. (define-rtl-statement assign % address expression)
  135.  
  136. (define-rtl-statement pop-return rtl:)
  137.  
  138. (define-rtl-statement continuation-entry rtl: continuation)
  139. (define-rtl-statement continuation-header rtl: continuation)
  140. (define-rtl-statement ic-procedure-header rtl: procedure)
  141. (define-rtl-statement open-procedure-header rtl: procedure)
  142. (define-rtl-statement procedure-header rtl: procedure min max)
  143. (define-rtl-statement closure-header rtl: procedure nentries entry)
  144.  
  145. (define-rtl-statement interpreter-call:access %
  146.   continuation environment name)
  147. (define-rtl-statement interpreter-call:define %
  148.   continuation environment name value)
  149. (define-rtl-statement interpreter-call:lookup %
  150.   continuation environment name safe?)
  151. (define-rtl-statement interpreter-call:set! %
  152.   continuation environment name value)
  153. (define-rtl-statement interpreter-call:unassigned? %
  154.   continuation environment name)
  155. (define-rtl-statement interpreter-call:unbound? %
  156.   continuation environment name)
  157.  
  158. (define-rtl-statement interpreter-call:cache-assignment %
  159.   continuation name value)
  160. (define-rtl-statement interpreter-call:cache-reference %
  161.   continuation name safe?)
  162. (define-rtl-statement interpreter-call:cache-unassigned? %
  163.   continuation name)
  164.  
  165. (define-rtl-statement invocation:apply rtl:
  166.   pushed continuation)
  167. (define-rtl-statement invocation:jump rtl:
  168.   pushed continuation procedure)
  169. (define-rtl-statement invocation:computed-jump rtl:
  170.   pushed continuation)
  171. (define-rtl-statement invocation:lexpr rtl:
  172.   pushed continuation procedure)
  173. (define-rtl-statement invocation:computed-lexpr rtl:
  174.   pushed continuation)
  175. (define-rtl-statement invocation:uuo-link rtl:
  176.   pushed continuation name)
  177. (define-rtl-statement invocation:global-link rtl:
  178.   pushed continuation name)
  179. (define-rtl-statement invocation:primitive rtl:
  180.   pushed continuation procedure)
  181. (define-rtl-statement invocation:special-primitive rtl:
  182.   pushed continuation procedure)
  183. (define-rtl-statement invocation:cache-reference rtl:
  184.   pushed continuation name)
  185. (define-rtl-statement invocation:lookup rtl:
  186.   pushed continuation environment name)
  187.  
  188. (define-rtl-statement invocation-prefix:move-frame-up rtl:
  189.   frame-size locative)
  190. (define-rtl-statement invocation-prefix:dynamic-link rtl:
  191.   frame-size locative register)