CompilerExpr.def 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. DEFINITION MODULE CompilerExpr ;
  2. (* Expression parser and value helpers. Compiler.mod imports these names
  3. unqualified; ERes is the shared expression descriptor. *)
  4. FROM CompilerShared IMPORT ERes ;
  5. PROCEDURE VarSize (r : ERes) : CARDINAL ;
  6. PROCEDURE IsCharArray (r : ERes) : BOOLEAN ;
  7. PROCEDURE LoadAtom (VAR r : ERes) ;
  8. PROCEDURE EmitBoundsCheck (lo, hi, code : CARDINAL) ;
  9. PROCEDURE ParseSub (VAR r : ERes) ;
  10. PROCEDURE ParseVar (VAR r : ERes) ;
  11. PROCEDURE ConstAdd (a, b : LONGINT) : LONGINT ;
  12. PROCEDURE ConstSub (a, b : LONGINT) : LONGINT ;
  13. PROCEDURE ConstMul (a, b : LONGINT) : LONGINT ;
  14. PROCEDURE EmXchgAxDx () ;
  15. PROCEDURE StrConcat (op : CARDINAL ; left, right : ERes ; VAR res : ERes) ;
  16. PROCEDURE StrOperand (r : ERes) : BOOLEAN ;
  17. PROCEDURE BinOpEmit (op : CARDINAL ; left, right : ERes ; VAR res : ERes) ;
  18. PROCEDURE ConstCmp (op : CARDINAL ; a, b : LONGINT ; VAR f : LONGINT) : BOOLEAN ;
  19. PROCEDURE SaveLeft (VAR left : ERes) ;
  20. PROCEDURE LoadPair (VAR left, right : ERes) ;
  21. PROCEDURE EmStrBlob (r : ERes) : CARDINAL ;
  22. PROCEDURE EmAsciiZLiteral (start, stop : CARDINAL) : CARDINAL ;
  23. PROCEDURE EmPushSetAddr (r : ERes) ;
  24. PROCEDURE SetPairSize (left, right : ERes ; VAR size, base : CARDINAL) : BOOLEAN ;
  25. PROCEDURE AllocSetScratch (size : CARDINAL) : CARDINAL ;
  26. PROCEDURE SetBinEmit (op : CARDINAL ; left, right : ERes ; VAR res : ERes) ;
  27. PROCEDURE MaterializeDyn (VAR r : ERes ; base, size : CARDINAL) ;
  28. PROCEDURE EmPushStrAddr (r : ERes) ;
  29. PROCEDURE EmPushRealAddr (r : ERes) ;
  30. PROCEDURE EmPushRealSlot (r : ERes ; reserve : CARDINAL) ;
  31. PROCEDURE EmCopyRealTo (dstOff : CARDINAL ; r : ERes) ;
  32. PROCEDURE EmPushStrSlot (r : ERes ; reserve, copyN : CARDINAL) ;
  33. PROCEDURE SetRangeBits (VAR bytes : ARRAY OF CHAR ; size, base : CARDINAL ; lo, hi : LONGINT) ;
  34. PROCEDURE RdSetLiteral (base, size : CARDINAL ; VAR bytes : ARRAY OF CHAR) : BOOLEAN ;
  35. PROCEDURE EmSetBlob (VAR bytes : ARRAY OF CHAR ; size : CARDINAL) : CARDINAL ;
  36. PROCEDURE FoldSetIn (left, right : ERes ; VAR res : ERes) ;
  37. PROCEDURE RdSetBase (VAR baseCls : CARDINAL ; VAR lo, hi : LONGINT) ;
  38. PROCEDURE NewScratchStr () : CARDINAL ;
  39. PROCEDURE NewScratchWord () : CARDINAL ;
  40. PROCEDURE NewScratchReal () : CARDINAL ;
  41. PROCEDURE NewScratchRealBlock () : CARDINAL ;
  42. PROCEDURE EmPushStrOperand (r : ERes) ;
  43. PROCEDURE ParseCmp (VAR r : ERes) ;
  44. PROCEDURE ParseAdd (VAR r : ERes) ;
  45. PROCEDURE ParseMul (VAR r : ERes) ;
  46. PROCEDURE ParseNeg (VAR r : ERes) ;
  47. PROCEDURE WithLookup (nm : ARRAY OF CHAR ; VAR r : ERes) : BOOLEAN ;
  48. PROCEDURE ParseAtom (VAR r : ERes) ;
  49. PROCEDURE AddPend (kind, who, place : CARDINAL) ;
  50. PROCEDURE ParmSlot (idx, k : CARDINAL) : CARDINAL ;
  51. PROCEDURE ParmIsVar (idx, k : CARDINAL) : BOOLEAN ;
  52. PROCEDURE EmCallMost (idx, cleanup : CARDINAL) ;
  53. PROCEDURE ParseCallArgs (idx : CARDINAL) ;
  54. PROCEDURE ParseCall (idx : CARDINAL) ;
  55. PROCEDURE ParseExpr (VAR r : ERes) ;
  56. PROCEDURE IntToMbf (v : LONGINT ; VAR b : ARRAY OF CHAR) ;
  57. PROCEDURE RealOperand (r : ERes ; dstOff : CARDINAL) ;
  58. PROCEDURE RealBin (op : CARDINAL ; left, right : ERes ; VAR res : ERes) ;
  59. PROCEDURE RealUnary (ent : CARDINAL ; VAR r : ERes) ;
  60. END CompilerExpr.