Sfoglia il codice sorgente

Rebuilt releases.

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8333 8c9fc860-2736-0410-a75d-ab315db34111
felixf 6 anni fa
parent
commit
a3b90658d0
91 ha cambiato i file con 105 aggiunte e 110 eliminazioni
  1. BIN
      Linux32/bin/Compiler.GofU
  2. 6 7
      Linux32/bin/Compiler.SymU
  3. BIN
      Linux32/bin/FoxAMDBackend.GofU
  4. 4 2
      Linux32/bin/FoxAMDBackend.SymU
  5. BIN
      Linux32/bin/FoxARMBackend.GofU
  6. BIN
      Linux32/bin/FoxCodeGenerators.GofU
  7. BIN
      Linux32/bin/FoxGlobal.GofU
  8. BIN
      Linux32/bin/FoxIntermediateBackend.GofU
  9. 6 6
      Linux32/bin/FoxIntermediateBackend.SymU
  10. BIN
      Linux32/bin/FoxInterpreterBackend.GofU
  11. BIN
      Linux32/bin/FoxOberonFrontend.GofU
  12. BIN
      Linux32/bin/FoxPrintout.GofU
  13. BIN
      Linux32/bin/FoxSemanticChecker.GofU
  14. 2 3
      Linux32/bin/FoxSemanticChecker.SymU
  15. 3 4
      Linux32/bin/FoxSyntaxTree.SymU
  16. BIN
      Linux32/bin/FoxTRMBackend.GofU
  17. BIN
      Linux32/bin/FoxTextualSymbolFile.GofU
  18. BIN
      Linux32/bin/Linker.GofU
  19. BIN
      Linux64/bin/Compiler.GofUu
  20. 6 7
      Linux64/bin/Compiler.SymUu
  21. BIN
      Linux64/bin/FoxAMDBackend.GofUu
  22. 4 2
      Linux64/bin/FoxAMDBackend.SymUu
  23. BIN
      Linux64/bin/FoxARMBackend.GofUu
  24. BIN
      Linux64/bin/FoxCodeGenerators.GofUu
  25. BIN
      Linux64/bin/FoxGlobal.GofUu
  26. BIN
      Linux64/bin/FoxIntermediateBackend.GofUu
  27. 6 6
      Linux64/bin/FoxIntermediateBackend.SymUu
  28. BIN
      Linux64/bin/FoxInterpreterBackend.GofUu
  29. BIN
      Linux64/bin/FoxOberonFrontend.GofUu
  30. BIN
      Linux64/bin/FoxPrintout.GofUu
  31. BIN
      Linux64/bin/FoxSemanticChecker.GofUu
  32. 2 3
      Linux64/bin/FoxSemanticChecker.SymUu
  33. 3 4
      Linux64/bin/FoxSyntaxTree.SymUu
  34. BIN
      Linux64/bin/FoxTRMBackend.GofUu
  35. BIN
      Linux64/bin/FoxTextualSymbolFile.GofUu
  36. BIN
      Linux64/bin/Linker.GofUu
  37. BIN
      Linux64/bin/OpenALSound.GofUu
  38. BIN
      Win32/bin/Compiler.GofW
  39. 6 7
      Win32/bin/Compiler.SymW
  40. BIN
      Win32/bin/FoxAMDBackend.GofW
  41. 4 2
      Win32/bin/FoxAMDBackend.SymW
  42. BIN
      Win32/bin/FoxARMBackend.GofW
  43. BIN
      Win32/bin/FoxCodeGenerators.GofW
  44. BIN
      Win32/bin/FoxGlobal.GofW
  45. BIN
      Win32/bin/FoxIntermediateBackend.GofW
  46. 6 6
      Win32/bin/FoxIntermediateBackend.SymW
  47. BIN
      Win32/bin/FoxInterpreterBackend.GofW
  48. BIN
      Win32/bin/FoxOberonFrontend.GofW
  49. BIN
      Win32/bin/FoxPrintout.GofW
  50. BIN
      Win32/bin/FoxSemanticChecker.GofW
  51. 2 3
      Win32/bin/FoxSemanticChecker.SymW
  52. 3 4
      Win32/bin/FoxSyntaxTree.SymW
  53. BIN
      Win32/bin/FoxTRMBackend.GofW
  54. BIN
      Win32/bin/FoxTextualSymbolFile.GofW
  55. BIN
      Win32/bin/Linker.GofW
  56. BIN
      Win64/bin/Compiler.GofWw
  57. 6 7
      Win64/bin/Compiler.SymWw
  58. BIN
      Win64/bin/FoxAMDBackend.GofWw
  59. 4 2
      Win64/bin/FoxAMDBackend.SymWw
  60. BIN
      Win64/bin/FoxARMBackend.GofWw
  61. BIN
      Win64/bin/FoxCodeGenerators.GofWw
  62. BIN
      Win64/bin/FoxGlobal.GofWw
  63. BIN
      Win64/bin/FoxIntermediateBackend.GofWw
  64. 6 6
      Win64/bin/FoxIntermediateBackend.SymWw
  65. BIN
      Win64/bin/FoxInterpreterBackend.GofWw
  66. BIN
      Win64/bin/FoxOberonFrontend.GofWw
  67. BIN
      Win64/bin/FoxPrintout.GofWw
  68. BIN
      Win64/bin/FoxSemanticChecker.GofWw
  69. 2 3
      Win64/bin/FoxSemanticChecker.SymWw
  70. 3 4
      Win64/bin/FoxSyntaxTree.SymWw
  71. BIN
      Win64/bin/FoxTRMBackend.GofWw
  72. BIN
      Win64/bin/FoxTextualSymbolFile.GofWw
  73. BIN
      Win64/bin/Linker.GofWw
  74. BIN
      WinAos/obg/Compiler.GofW
  75. 6 7
      WinAos/obg/Compiler.SymW
  76. BIN
      WinAos/obg/FoxAMDBackend.GofW
  77. 4 2
      WinAos/obg/FoxAMDBackend.SymW
  78. BIN
      WinAos/obg/FoxARMBackend.GofW
  79. BIN
      WinAos/obg/FoxCodeGenerators.GofW
  80. BIN
      WinAos/obg/FoxGlobal.GofW
  81. BIN
      WinAos/obg/FoxIntermediateBackend.GofW
  82. 6 6
      WinAos/obg/FoxIntermediateBackend.SymW
  83. BIN
      WinAos/obg/FoxInterpreterBackend.GofW
  84. BIN
      WinAos/obg/FoxOberonFrontend.GofW
  85. BIN
      WinAos/obg/FoxPrintout.GofW
  86. BIN
      WinAos/obg/FoxSemanticChecker.GofW
  87. 2 3
      WinAos/obg/FoxSemanticChecker.SymW
  88. 3 4
      WinAos/obg/FoxSyntaxTree.SymW
  89. BIN
      WinAos/obg/FoxTRMBackend.GofW
  90. BIN
      WinAos/obg/FoxTextualSymbolFile.GofW
  91. BIN
      WinAos/obg/Linker.GofW

BIN
Linux32/bin/Compiler.GofU


+ 6 - 7
Linux32/bin/Compiler.SymU

@@ -9,13 +9,12 @@ CONST
 	FindPC* = 5; 
 	Warnings* = 7; 
 	ForceModuleBodies* = 8; 
-	UseDarwinCCalls* = 9; 
-	SingleModule* = 10; 
-	Oberon07* = 11; 
-	ChangeCase* = 12; 
-	Cooperative* = 13; 
-	CellsAreObjects* = 14; 
-	UseLineNumbers* = 15; 
+	SingleModule* = 9; 
+	Oberon07* = 10; 
+	ChangeCase* = 11; 
+	Cooperative* = 12; 
+	CellsAreObjects* = 13; 
+	UseLineNumbers* = 14; 
 	DefaultBackend = \"AMD"\; 
 	DefaultFrontend = \"Oberon"\; 
 TYPE 

BIN
Linux32/bin/FoxAMDBackend.GofU


+ 4 - 2
Linux32/bin/FoxAMDBackend.SymU

@@ -207,14 +207,16 @@ TYPE
 		forceFPU: BOOLEAN; 
 		winAPIRegisters: ARRAY 4 OF LONGINT; 
 		cRegisters: ARRAY 6 OF LONGINT; 
+		intParameterIndex: WORD; 
+		floatParameterIndex: WORD; 
 
 		PROCEDURE ^  & InitBackendAMD64; 
 		PROCEDURE ^ Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System); 
 		PROCEDURE ^ GetSystem*(): Global.System; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
 		PROCEDURE ^ HardwareIntegerRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
 		PROCEDURE ^ HardwareFloatRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ ResetParameterRegisters*; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
 		PROCEDURE ^ SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN; 
 		PROCEDURE ^ GenerateBinary(module: Sections.Module; dump: Streams.Writer); 
 		PROCEDURE ^ ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule; 

BIN
Linux32/bin/FoxARMBackend.GofU


BIN
Linux32/bin/FoxCodeGenerators.GofU


BIN
Linux32/bin/FoxGlobal.GofU


BIN
Linux32/bin/FoxIntermediateBackend.GofU


+ 6 - 6
Linux32/bin/FoxIntermediateBackend.SymU

@@ -86,8 +86,8 @@ CONST
 	ProtectModulesPointers = FALSE; 
 	CreateProcedureDescInfo = TRUE; 
 	WarningDynamicLoading = FALSE; 
-	SysvABI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention}; 
-	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention, SyntaxTree.WinAPICallingConvention}; 
+	SysvABI = {SyntaxTree.CCallingConvention}; 
+	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.WinAPICallingConvention}; 
 TYPE 
 	Position = SyntaxTree.Position; 
 
@@ -315,7 +315,7 @@ TYPE
 		PROCEDURE ^ TraceExit(CONST s: ARRAY OF CHAR); 
 		PROCEDURE ^ Emit(instruction: IntermediateCode.Instruction); 
 		PROCEDURE ^ EmitTrap(position: Position; trapNo: LONGINT); 
-		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT; numRegs: LONGINT); 
+		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT); 
 		PROCEDURE ^ Enter(position: Position; callconv: LONGINT; varSize: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ Leave(position: Position; callconv: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ EmitLeave(section: IntermediateCode.Section; position: Basic.Position; procedure: SyntaxTree.Procedure; callconv: LONGINT); 
@@ -408,7 +408,7 @@ TYPE
 		PROCEDURE ^ IndexDesignator(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ VisitIndexDesignator*(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ PrepareTensorDescriptor(expression: SyntaxTree.IndexDesignator): SyntaxTree.Variable; 
-		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; numberRegister: LONGINT); 
+		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; register: WORD); 
 		PROCEDURE ^ VisitStatementDesignator*(x: SyntaxTree.StatementDesignator); 
 		PROCEDURE ^ InlineProcedureCall(x: SyntaxTree.ProcedureCallDesignator): BOOLEAN; 
 		PROCEDURE ^ VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator); 
@@ -614,8 +614,8 @@ TYPE
 		experiment: BOOLEAN; 
 
 		PROCEDURE ^  & InitIntermediateBackend*; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
+		PROCEDURE ^ ResetParameterRegisters*; 
 		PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module; 
 		PROCEDURE ^ SupportedImmediate*(CONST op: IntermediateCode.Operand): BOOLEAN; 
 		PROCEDURE ^ ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule; 

BIN
Linux32/bin/FoxInterpreterBackend.GofU


BIN
Linux32/bin/FoxOberonFrontend.GofU


BIN
Linux32/bin/FoxPrintout.GofU


BIN
Linux32/bin/FoxSemanticChecker.GofU


+ 2 - 3
Linux32/bin/FoxSemanticChecker.SymU

@@ -45,7 +45,6 @@ TYPE
 	VAR 
 		module: SyntaxTree.Module; 
 		diagnostics: Diagnostics.Diagnostics; 
-		useDarwinCCalls: BOOLEAN; 
 		cooperative: BOOLEAN; 
 		error-: BOOLEAN; 
 		VerboseErrorMessage: BOOLEAN; 
@@ -74,7 +73,7 @@ TYPE
 		cellsAreObjects: BOOLEAN; 
 		variableAccessed: BOOLEAN; 
 
-		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
+		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
 		PROCEDURE ^ Error(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ Warning(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ ErrorSS(position: Position; CONST msg, msg2: ARRAY OF CHAR); 
@@ -360,7 +359,7 @@ TYPE
 	PROCEDURE ^ FindSuperProcedure*(scope: SyntaxTree.RecordScope; procedure: SyntaxTree.Procedure): SyntaxTree.Procedure; 
 	PROCEDURE ^ GetConstructor(record: SyntaxTree.RecordType): SyntaxTree.Procedure; 
 	PROCEDURE ^ EnterCase(VAR root: SyntaxTree.CaseConstant; min, max: Basic.Integer): BOOLEAN; 
-	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
+	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
 	PROCEDURE ^ NewWarnings*(diagnostics: Diagnostics.Diagnostics): Warnings; 
 	PROCEDURE ^ IsRangeType(type: SyntaxTree.Type): BOOLEAN; 
 	PROCEDURE ^ IsMathArrayType(type: SyntaxTree.Type): BOOLEAN; 

+ 3 - 4
Linux32/bin/FoxSyntaxTree.SymU

@@ -4,10 +4,9 @@ CONST
 	OberonCallingConvention* = 0; 
 	CCallingConvention* = 1; 
 	WinAPICallingConvention* = 2; 
-	DarwinCCallingConvention* = 3; 
-	InterruptCallingConvention* = 4; 
-	PlatformCallingConvention* = 5; 
-	UndefinedCallingConvention* = 6; 
+	InterruptCallingConvention* = 3; 
+	PlatformCallingConvention* = 4; 
+	UndefinedCallingConvention* = 5; 
 	InternalRead* = 0; 
 	InternalWrite* = 1; 
 	ProtectedRead* = 2; 

BIN
Linux32/bin/FoxTRMBackend.GofU


BIN
Linux32/bin/FoxTextualSymbolFile.GofU


BIN
Linux32/bin/Linker.GofU


BIN
Linux64/bin/Compiler.GofUu


+ 6 - 7
Linux64/bin/Compiler.SymUu

@@ -9,13 +9,12 @@ CONST
 	FindPC* = 5; 
 	Warnings* = 7; 
 	ForceModuleBodies* = 8; 
-	UseDarwinCCalls* = 9; 
-	SingleModule* = 10; 
-	Oberon07* = 11; 
-	ChangeCase* = 12; 
-	Cooperative* = 13; 
-	CellsAreObjects* = 14; 
-	UseLineNumbers* = 15; 
+	SingleModule* = 9; 
+	Oberon07* = 10; 
+	ChangeCase* = 11; 
+	Cooperative* = 12; 
+	CellsAreObjects* = 13; 
+	UseLineNumbers* = 14; 
 	DefaultBackend = \"AMD"\; 
 	DefaultFrontend = \"Oberon"\; 
 TYPE 

BIN
Linux64/bin/FoxAMDBackend.GofUu


+ 4 - 2
Linux64/bin/FoxAMDBackend.SymUu

@@ -207,14 +207,16 @@ TYPE
 		forceFPU: BOOLEAN; 
 		winAPIRegisters: ARRAY 4 OF LONGINT; 
 		cRegisters: ARRAY 6 OF LONGINT; 
+		intParameterIndex: WORD; 
+		floatParameterIndex: WORD; 
 
 		PROCEDURE ^  & InitBackendAMD64; 
 		PROCEDURE ^ Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System); 
 		PROCEDURE ^ GetSystem*(): Global.System; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
 		PROCEDURE ^ HardwareIntegerRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
 		PROCEDURE ^ HardwareFloatRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ ResetParameterRegisters*; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
 		PROCEDURE ^ SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN; 
 		PROCEDURE ^ GenerateBinary(module: Sections.Module; dump: Streams.Writer); 
 		PROCEDURE ^ ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule; 

BIN
Linux64/bin/FoxARMBackend.GofUu


BIN
Linux64/bin/FoxCodeGenerators.GofUu


BIN
Linux64/bin/FoxGlobal.GofUu


BIN
Linux64/bin/FoxIntermediateBackend.GofUu


+ 6 - 6
Linux64/bin/FoxIntermediateBackend.SymUu

@@ -86,8 +86,8 @@ CONST
 	ProtectModulesPointers = FALSE; 
 	CreateProcedureDescInfo = TRUE; 
 	WarningDynamicLoading = FALSE; 
-	SysvABI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention}; 
-	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention, SyntaxTree.WinAPICallingConvention}; 
+	SysvABI = {SyntaxTree.CCallingConvention}; 
+	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.WinAPICallingConvention}; 
 TYPE 
 	Position = SyntaxTree.Position; 
 
@@ -315,7 +315,7 @@ TYPE
 		PROCEDURE ^ TraceExit(CONST s: ARRAY OF CHAR); 
 		PROCEDURE ^ Emit(instruction: IntermediateCode.Instruction); 
 		PROCEDURE ^ EmitTrap(position: Position; trapNo: LONGINT); 
-		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT; numRegs: LONGINT); 
+		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT); 
 		PROCEDURE ^ Enter(position: Position; callconv: LONGINT; varSize: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ Leave(position: Position; callconv: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ EmitLeave(section: IntermediateCode.Section; position: Basic.Position; procedure: SyntaxTree.Procedure; callconv: LONGINT); 
@@ -408,7 +408,7 @@ TYPE
 		PROCEDURE ^ IndexDesignator(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ VisitIndexDesignator*(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ PrepareTensorDescriptor(expression: SyntaxTree.IndexDesignator): SyntaxTree.Variable; 
-		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; numberRegister: LONGINT); 
+		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; register: WORD); 
 		PROCEDURE ^ VisitStatementDesignator*(x: SyntaxTree.StatementDesignator); 
 		PROCEDURE ^ InlineProcedureCall(x: SyntaxTree.ProcedureCallDesignator): BOOLEAN; 
 		PROCEDURE ^ VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator); 
@@ -614,8 +614,8 @@ TYPE
 		experiment: BOOLEAN; 
 
 		PROCEDURE ^  & InitIntermediateBackend*; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
+		PROCEDURE ^ ResetParameterRegisters*; 
 		PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module; 
 		PROCEDURE ^ SupportedImmediate*(CONST op: IntermediateCode.Operand): BOOLEAN; 
 		PROCEDURE ^ ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule; 

BIN
Linux64/bin/FoxInterpreterBackend.GofUu


BIN
Linux64/bin/FoxOberonFrontend.GofUu


BIN
Linux64/bin/FoxPrintout.GofUu


BIN
Linux64/bin/FoxSemanticChecker.GofUu


+ 2 - 3
Linux64/bin/FoxSemanticChecker.SymUu

@@ -45,7 +45,6 @@ TYPE
 	VAR 
 		module: SyntaxTree.Module; 
 		diagnostics: Diagnostics.Diagnostics; 
-		useDarwinCCalls: BOOLEAN; 
 		cooperative: BOOLEAN; 
 		error-: BOOLEAN; 
 		VerboseErrorMessage: BOOLEAN; 
@@ -74,7 +73,7 @@ TYPE
 		cellsAreObjects: BOOLEAN; 
 		variableAccessed: BOOLEAN; 
 
-		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
+		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
 		PROCEDURE ^ Error(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ Warning(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ ErrorSS(position: Position; CONST msg, msg2: ARRAY OF CHAR); 
@@ -360,7 +359,7 @@ TYPE
 	PROCEDURE ^ FindSuperProcedure*(scope: SyntaxTree.RecordScope; procedure: SyntaxTree.Procedure): SyntaxTree.Procedure; 
 	PROCEDURE ^ GetConstructor(record: SyntaxTree.RecordType): SyntaxTree.Procedure; 
 	PROCEDURE ^ EnterCase(VAR root: SyntaxTree.CaseConstant; min, max: Basic.Integer): BOOLEAN; 
-	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
+	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
 	PROCEDURE ^ NewWarnings*(diagnostics: Diagnostics.Diagnostics): Warnings; 
 	PROCEDURE ^ IsRangeType(type: SyntaxTree.Type): BOOLEAN; 
 	PROCEDURE ^ IsMathArrayType(type: SyntaxTree.Type): BOOLEAN; 

+ 3 - 4
Linux64/bin/FoxSyntaxTree.SymUu

@@ -4,10 +4,9 @@ CONST
 	OberonCallingConvention* = 0; 
 	CCallingConvention* = 1; 
 	WinAPICallingConvention* = 2; 
-	DarwinCCallingConvention* = 3; 
-	InterruptCallingConvention* = 4; 
-	PlatformCallingConvention* = 5; 
-	UndefinedCallingConvention* = 6; 
+	InterruptCallingConvention* = 3; 
+	PlatformCallingConvention* = 4; 
+	UndefinedCallingConvention* = 5; 
 	InternalRead* = 0; 
 	InternalWrite* = 1; 
 	ProtectedRead* = 2; 

BIN
Linux64/bin/FoxTRMBackend.GofUu


BIN
Linux64/bin/FoxTextualSymbolFile.GofUu


BIN
Linux64/bin/Linker.GofUu


BIN
Linux64/bin/OpenALSound.GofUu


BIN
Win32/bin/Compiler.GofW


+ 6 - 7
Win32/bin/Compiler.SymW

@@ -9,13 +9,12 @@ CONST
 	FindPC* = 5; 
 	Warnings* = 7; 
 	ForceModuleBodies* = 8; 
-	UseDarwinCCalls* = 9; 
-	SingleModule* = 10; 
-	Oberon07* = 11; 
-	ChangeCase* = 12; 
-	Cooperative* = 13; 
-	CellsAreObjects* = 14; 
-	UseLineNumbers* = 15; 
+	SingleModule* = 9; 
+	Oberon07* = 10; 
+	ChangeCase* = 11; 
+	Cooperative* = 12; 
+	CellsAreObjects* = 13; 
+	UseLineNumbers* = 14; 
 	DefaultBackend = \"AMD"\; 
 	DefaultFrontend = \"Oberon"\; 
 TYPE 

BIN
Win32/bin/FoxAMDBackend.GofW


+ 4 - 2
Win32/bin/FoxAMDBackend.SymW

@@ -207,14 +207,16 @@ TYPE
 		forceFPU: BOOLEAN; 
 		winAPIRegisters: ARRAY 4 OF LONGINT; 
 		cRegisters: ARRAY 6 OF LONGINT; 
+		intParameterIndex: WORD; 
+		floatParameterIndex: WORD; 
 
 		PROCEDURE ^  & InitBackendAMD64; 
 		PROCEDURE ^ Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System); 
 		PROCEDURE ^ GetSystem*(): Global.System; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
 		PROCEDURE ^ HardwareIntegerRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
 		PROCEDURE ^ HardwareFloatRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ ResetParameterRegisters*; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
 		PROCEDURE ^ SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN; 
 		PROCEDURE ^ GenerateBinary(module: Sections.Module; dump: Streams.Writer); 
 		PROCEDURE ^ ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule; 

BIN
Win32/bin/FoxARMBackend.GofW


BIN
Win32/bin/FoxCodeGenerators.GofW


BIN
Win32/bin/FoxGlobal.GofW


BIN
Win32/bin/FoxIntermediateBackend.GofW


+ 6 - 6
Win32/bin/FoxIntermediateBackend.SymW

@@ -86,8 +86,8 @@ CONST
 	ProtectModulesPointers = FALSE; 
 	CreateProcedureDescInfo = TRUE; 
 	WarningDynamicLoading = FALSE; 
-	SysvABI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention}; 
-	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention, SyntaxTree.WinAPICallingConvention}; 
+	SysvABI = {SyntaxTree.CCallingConvention}; 
+	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.WinAPICallingConvention}; 
 TYPE 
 	Position = SyntaxTree.Position; 
 
@@ -315,7 +315,7 @@ TYPE
 		PROCEDURE ^ TraceExit(CONST s: ARRAY OF CHAR); 
 		PROCEDURE ^ Emit(instruction: IntermediateCode.Instruction); 
 		PROCEDURE ^ EmitTrap(position: Position; trapNo: LONGINT); 
-		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT; numRegs: LONGINT); 
+		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT); 
 		PROCEDURE ^ Enter(position: Position; callconv: LONGINT; varSize: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ Leave(position: Position; callconv: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ EmitLeave(section: IntermediateCode.Section; position: Basic.Position; procedure: SyntaxTree.Procedure; callconv: LONGINT); 
@@ -408,7 +408,7 @@ TYPE
 		PROCEDURE ^ IndexDesignator(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ VisitIndexDesignator*(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ PrepareTensorDescriptor(expression: SyntaxTree.IndexDesignator): SyntaxTree.Variable; 
-		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; numberRegister: LONGINT); 
+		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; register: WORD); 
 		PROCEDURE ^ VisitStatementDesignator*(x: SyntaxTree.StatementDesignator); 
 		PROCEDURE ^ InlineProcedureCall(x: SyntaxTree.ProcedureCallDesignator): BOOLEAN; 
 		PROCEDURE ^ VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator); 
@@ -614,8 +614,8 @@ TYPE
 		experiment: BOOLEAN; 
 
 		PROCEDURE ^  & InitIntermediateBackend*; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
+		PROCEDURE ^ ResetParameterRegisters*; 
 		PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module; 
 		PROCEDURE ^ SupportedImmediate*(CONST op: IntermediateCode.Operand): BOOLEAN; 
 		PROCEDURE ^ ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule; 

BIN
Win32/bin/FoxInterpreterBackend.GofW


BIN
Win32/bin/FoxOberonFrontend.GofW


BIN
Win32/bin/FoxPrintout.GofW


BIN
Win32/bin/FoxSemanticChecker.GofW


+ 2 - 3
Win32/bin/FoxSemanticChecker.SymW

@@ -45,7 +45,6 @@ TYPE
 	VAR 
 		module: SyntaxTree.Module; 
 		diagnostics: Diagnostics.Diagnostics; 
-		useDarwinCCalls: BOOLEAN; 
 		cooperative: BOOLEAN; 
 		error-: BOOLEAN; 
 		VerboseErrorMessage: BOOLEAN; 
@@ -74,7 +73,7 @@ TYPE
 		cellsAreObjects: BOOLEAN; 
 		variableAccessed: BOOLEAN; 
 
-		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
+		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
 		PROCEDURE ^ Error(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ Warning(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ ErrorSS(position: Position; CONST msg, msg2: ARRAY OF CHAR); 
@@ -360,7 +359,7 @@ TYPE
 	PROCEDURE ^ FindSuperProcedure*(scope: SyntaxTree.RecordScope; procedure: SyntaxTree.Procedure): SyntaxTree.Procedure; 
 	PROCEDURE ^ GetConstructor(record: SyntaxTree.RecordType): SyntaxTree.Procedure; 
 	PROCEDURE ^ EnterCase(VAR root: SyntaxTree.CaseConstant; min, max: Basic.Integer): BOOLEAN; 
-	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
+	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
 	PROCEDURE ^ NewWarnings*(diagnostics: Diagnostics.Diagnostics): Warnings; 
 	PROCEDURE ^ IsRangeType(type: SyntaxTree.Type): BOOLEAN; 
 	PROCEDURE ^ IsMathArrayType(type: SyntaxTree.Type): BOOLEAN; 

+ 3 - 4
Win32/bin/FoxSyntaxTree.SymW

@@ -4,10 +4,9 @@ CONST
 	OberonCallingConvention* = 0; 
 	CCallingConvention* = 1; 
 	WinAPICallingConvention* = 2; 
-	DarwinCCallingConvention* = 3; 
-	InterruptCallingConvention* = 4; 
-	PlatformCallingConvention* = 5; 
-	UndefinedCallingConvention* = 6; 
+	InterruptCallingConvention* = 3; 
+	PlatformCallingConvention* = 4; 
+	UndefinedCallingConvention* = 5; 
 	InternalRead* = 0; 
 	InternalWrite* = 1; 
 	ProtectedRead* = 2; 

BIN
Win32/bin/FoxTRMBackend.GofW


BIN
Win32/bin/FoxTextualSymbolFile.GofW


BIN
Win32/bin/Linker.GofW


BIN
Win64/bin/Compiler.GofWw


+ 6 - 7
Win64/bin/Compiler.SymWw

@@ -9,13 +9,12 @@ CONST
 	FindPC* = 5; 
 	Warnings* = 7; 
 	ForceModuleBodies* = 8; 
-	UseDarwinCCalls* = 9; 
-	SingleModule* = 10; 
-	Oberon07* = 11; 
-	ChangeCase* = 12; 
-	Cooperative* = 13; 
-	CellsAreObjects* = 14; 
-	UseLineNumbers* = 15; 
+	SingleModule* = 9; 
+	Oberon07* = 10; 
+	ChangeCase* = 11; 
+	Cooperative* = 12; 
+	CellsAreObjects* = 13; 
+	UseLineNumbers* = 14; 
 	DefaultBackend = \"AMD"\; 
 	DefaultFrontend = \"Oberon"\; 
 TYPE 

BIN
Win64/bin/FoxAMDBackend.GofWw


+ 4 - 2
Win64/bin/FoxAMDBackend.SymWw

@@ -207,14 +207,16 @@ TYPE
 		forceFPU: BOOLEAN; 
 		winAPIRegisters: ARRAY 4 OF LONGINT; 
 		cRegisters: ARRAY 6 OF LONGINT; 
+		intParameterIndex: WORD; 
+		floatParameterIndex: WORD; 
 
 		PROCEDURE ^  & InitBackendAMD64; 
 		PROCEDURE ^ Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System); 
 		PROCEDURE ^ GetSystem*(): Global.System; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
 		PROCEDURE ^ HardwareIntegerRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
 		PROCEDURE ^ HardwareFloatRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ ResetParameterRegisters*; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
 		PROCEDURE ^ SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN; 
 		PROCEDURE ^ GenerateBinary(module: Sections.Module; dump: Streams.Writer); 
 		PROCEDURE ^ ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule; 

BIN
Win64/bin/FoxARMBackend.GofWw


BIN
Win64/bin/FoxCodeGenerators.GofWw


BIN
Win64/bin/FoxGlobal.GofWw


BIN
Win64/bin/FoxIntermediateBackend.GofWw


+ 6 - 6
Win64/bin/FoxIntermediateBackend.SymWw

@@ -86,8 +86,8 @@ CONST
 	ProtectModulesPointers = FALSE; 
 	CreateProcedureDescInfo = TRUE; 
 	WarningDynamicLoading = FALSE; 
-	SysvABI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention}; 
-	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention, SyntaxTree.WinAPICallingConvention}; 
+	SysvABI = {SyntaxTree.CCallingConvention}; 
+	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.WinAPICallingConvention}; 
 TYPE 
 	Position = SyntaxTree.Position; 
 
@@ -315,7 +315,7 @@ TYPE
 		PROCEDURE ^ TraceExit(CONST s: ARRAY OF CHAR); 
 		PROCEDURE ^ Emit(instruction: IntermediateCode.Instruction); 
 		PROCEDURE ^ EmitTrap(position: Position; trapNo: LONGINT); 
-		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT; numRegs: LONGINT); 
+		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT); 
 		PROCEDURE ^ Enter(position: Position; callconv: LONGINT; varSize: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ Leave(position: Position; callconv: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ EmitLeave(section: IntermediateCode.Section; position: Basic.Position; procedure: SyntaxTree.Procedure; callconv: LONGINT); 
@@ -408,7 +408,7 @@ TYPE
 		PROCEDURE ^ IndexDesignator(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ VisitIndexDesignator*(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ PrepareTensorDescriptor(expression: SyntaxTree.IndexDesignator): SyntaxTree.Variable; 
-		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; numberRegister: LONGINT); 
+		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; register: WORD); 
 		PROCEDURE ^ VisitStatementDesignator*(x: SyntaxTree.StatementDesignator); 
 		PROCEDURE ^ InlineProcedureCall(x: SyntaxTree.ProcedureCallDesignator): BOOLEAN; 
 		PROCEDURE ^ VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator); 
@@ -614,8 +614,8 @@ TYPE
 		experiment: BOOLEAN; 
 
 		PROCEDURE ^  & InitIntermediateBackend*; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
+		PROCEDURE ^ ResetParameterRegisters*; 
 		PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module; 
 		PROCEDURE ^ SupportedImmediate*(CONST op: IntermediateCode.Operand): BOOLEAN; 
 		PROCEDURE ^ ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule; 

BIN
Win64/bin/FoxInterpreterBackend.GofWw


BIN
Win64/bin/FoxOberonFrontend.GofWw


BIN
Win64/bin/FoxPrintout.GofWw


BIN
Win64/bin/FoxSemanticChecker.GofWw


+ 2 - 3
Win64/bin/FoxSemanticChecker.SymWw

@@ -45,7 +45,6 @@ TYPE
 	VAR 
 		module: SyntaxTree.Module; 
 		diagnostics: Diagnostics.Diagnostics; 
-		useDarwinCCalls: BOOLEAN; 
 		cooperative: BOOLEAN; 
 		error-: BOOLEAN; 
 		VerboseErrorMessage: BOOLEAN; 
@@ -74,7 +73,7 @@ TYPE
 		cellsAreObjects: BOOLEAN; 
 		variableAccessed: BOOLEAN; 
 
-		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
+		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
 		PROCEDURE ^ Error(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ Warning(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ ErrorSS(position: Position; CONST msg, msg2: ARRAY OF CHAR); 
@@ -360,7 +359,7 @@ TYPE
 	PROCEDURE ^ FindSuperProcedure*(scope: SyntaxTree.RecordScope; procedure: SyntaxTree.Procedure): SyntaxTree.Procedure; 
 	PROCEDURE ^ GetConstructor(record: SyntaxTree.RecordType): SyntaxTree.Procedure; 
 	PROCEDURE ^ EnterCase(VAR root: SyntaxTree.CaseConstant; min, max: Basic.Integer): BOOLEAN; 
-	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
+	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
 	PROCEDURE ^ NewWarnings*(diagnostics: Diagnostics.Diagnostics): Warnings; 
 	PROCEDURE ^ IsRangeType(type: SyntaxTree.Type): BOOLEAN; 
 	PROCEDURE ^ IsMathArrayType(type: SyntaxTree.Type): BOOLEAN; 

+ 3 - 4
Win64/bin/FoxSyntaxTree.SymWw

@@ -4,10 +4,9 @@ CONST
 	OberonCallingConvention* = 0; 
 	CCallingConvention* = 1; 
 	WinAPICallingConvention* = 2; 
-	DarwinCCallingConvention* = 3; 
-	InterruptCallingConvention* = 4; 
-	PlatformCallingConvention* = 5; 
-	UndefinedCallingConvention* = 6; 
+	InterruptCallingConvention* = 3; 
+	PlatformCallingConvention* = 4; 
+	UndefinedCallingConvention* = 5; 
 	InternalRead* = 0; 
 	InternalWrite* = 1; 
 	ProtectedRead* = 2; 

BIN
Win64/bin/FoxTRMBackend.GofWw


BIN
Win64/bin/FoxTextualSymbolFile.GofWw


BIN
Win64/bin/Linker.GofWw


BIN
WinAos/obg/Compiler.GofW


+ 6 - 7
WinAos/obg/Compiler.SymW

@@ -9,13 +9,12 @@ CONST
 	FindPC* = 5; 
 	Warnings* = 7; 
 	ForceModuleBodies* = 8; 
-	UseDarwinCCalls* = 9; 
-	SingleModule* = 10; 
-	Oberon07* = 11; 
-	ChangeCase* = 12; 
-	Cooperative* = 13; 
-	CellsAreObjects* = 14; 
-	UseLineNumbers* = 15; 
+	SingleModule* = 9; 
+	Oberon07* = 10; 
+	ChangeCase* = 11; 
+	Cooperative* = 12; 
+	CellsAreObjects* = 13; 
+	UseLineNumbers* = 14; 
 	DefaultBackend = \"AMD"\; 
 	DefaultFrontend = \"Oberon"\; 
 TYPE 

BIN
WinAos/obg/FoxAMDBackend.GofW


+ 4 - 2
WinAos/obg/FoxAMDBackend.SymW

@@ -207,14 +207,16 @@ TYPE
 		forceFPU: BOOLEAN; 
 		winAPIRegisters: ARRAY 4 OF LONGINT; 
 		cRegisters: ARRAY 6 OF LONGINT; 
+		intParameterIndex: WORD; 
+		floatParameterIndex: WORD; 
 
 		PROCEDURE ^  & InitBackendAMD64; 
 		PROCEDURE ^ Initialize*(diagnostics: Diagnostics.Diagnostics; log: Streams.Writer; flags: SET; checker: SemanticChecker.Checker; system: Global.System); 
 		PROCEDURE ^ GetSystem*(): Global.System; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
 		PROCEDURE ^ HardwareIntegerRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
 		PROCEDURE ^ HardwareFloatRegister(index: LONGINT; sizeInBits: LONGINT): LONGINT; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ ResetParameterRegisters*; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
 		PROCEDURE ^ SupportedInstruction*(CONST instruction: IntermediateCode.Instruction; VAR moduleName, procedureName: ARRAY OF CHAR): BOOLEAN; 
 		PROCEDURE ^ GenerateBinary(module: Sections.Module; dump: Streams.Writer); 
 		PROCEDURE ^ ProcessIntermediateCodeModule*(intermediateCodeModule: Formats.GeneratedModule): Formats.GeneratedModule; 

BIN
WinAos/obg/FoxARMBackend.GofW


BIN
WinAos/obg/FoxCodeGenerators.GofW


BIN
WinAos/obg/FoxGlobal.GofW


BIN
WinAos/obg/FoxIntermediateBackend.GofW


+ 6 - 6
WinAos/obg/FoxIntermediateBackend.SymW

@@ -86,8 +86,8 @@ CONST
 	ProtectModulesPointers = FALSE; 
 	CreateProcedureDescInfo = TRUE; 
 	WarningDynamicLoading = FALSE; 
-	SysvABI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention}; 
-	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.DarwinCCallingConvention, SyntaxTree.WinAPICallingConvention}; 
+	SysvABI = {SyntaxTree.CCallingConvention}; 
+	SysvABIorWINAPI = {SyntaxTree.CCallingConvention, SyntaxTree.WinAPICallingConvention}; 
 TYPE 
 	Position = SyntaxTree.Position; 
 
@@ -315,7 +315,7 @@ TYPE
 		PROCEDURE ^ TraceExit(CONST s: ARRAY OF CHAR); 
 		PROCEDURE ^ Emit(instruction: IntermediateCode.Instruction); 
 		PROCEDURE ^ EmitTrap(position: Position; trapNo: LONGINT); 
-		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT; numRegs: LONGINT); 
+		PROCEDURE ^ EmitEnter(section: IntermediateCode.Section; position: Position; procedure: SyntaxTree.Procedure; callconv: LONGINT; varSize: LONGINT); 
 		PROCEDURE ^ Enter(position: Position; callconv: LONGINT; varSize: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ Leave(position: Position; callconv: LONGINT): IntermediateCode.Instruction; 
 		PROCEDURE ^ EmitLeave(section: IntermediateCode.Section; position: Basic.Position; procedure: SyntaxTree.Procedure; callconv: LONGINT); 
@@ -408,7 +408,7 @@ TYPE
 		PROCEDURE ^ IndexDesignator(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ VisitIndexDesignator*(x: SyntaxTree.IndexDesignator); 
 		PROCEDURE ^ PrepareTensorDescriptor(expression: SyntaxTree.IndexDesignator): SyntaxTree.Variable; 
-		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; numberRegister: LONGINT); 
+		PROCEDURE ^ PushParameter(expression: SyntaxTree.Expression; parameter: SyntaxTree.Parameter; callingConvention: LONGINT; needsParameterBackup: BOOLEAN; VAR parameterBackup: IntermediateCode.Operand; register: WORD); 
 		PROCEDURE ^ VisitStatementDesignator*(x: SyntaxTree.StatementDesignator); 
 		PROCEDURE ^ InlineProcedureCall(x: SyntaxTree.ProcedureCallDesignator): BOOLEAN; 
 		PROCEDURE ^ VisitProcedureCallDesignator*(x: SyntaxTree.ProcedureCallDesignator); 
@@ -614,8 +614,8 @@ TYPE
 		experiment: BOOLEAN; 
 
 		PROCEDURE ^  & InitIntermediateBackend*; 
-		PROCEDURE ^ NumberParameterRegisters*(callingConvention: SyntaxTree.CallingConvention): SIZE; 
-		PROCEDURE ^ ParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; index: LONGINT): LONGINT; 
+		PROCEDURE ^ GetParameterRegister*(callingConvention: SyntaxTree.CallingConvention; type: IntermediateCode.Type; VAR register: WORD): BOOLEAN; 
+		PROCEDURE ^ ResetParameterRegisters*; 
 		PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module; 
 		PROCEDURE ^ SupportedImmediate*(CONST op: IntermediateCode.Operand): BOOLEAN; 
 		PROCEDURE ^ ProcessSyntaxTreeModule*(syntaxTreeModule: SyntaxTree.Module): Formats.GeneratedModule; 

BIN
WinAos/obg/FoxInterpreterBackend.GofW


BIN
WinAos/obg/FoxOberonFrontend.GofW


BIN
WinAos/obg/FoxPrintout.GofW


BIN
WinAos/obg/FoxSemanticChecker.GofW


+ 2 - 3
WinAos/obg/FoxSemanticChecker.SymW

@@ -45,7 +45,6 @@ TYPE
 	VAR 
 		module: SyntaxTree.Module; 
 		diagnostics: Diagnostics.Diagnostics; 
-		useDarwinCCalls: BOOLEAN; 
 		cooperative: BOOLEAN; 
 		error-: BOOLEAN; 
 		VerboseErrorMessage: BOOLEAN; 
@@ -74,7 +73,7 @@ TYPE
 		cellsAreObjects: BOOLEAN; 
 		variableAccessed: BOOLEAN; 
 
-		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
+		PROCEDURE ^  & InitChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR); 
 		PROCEDURE ^ Error(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ Warning(position: Position; CONST message: ARRAY OF CHAR); 
 		PROCEDURE ^ ErrorSS(position: Position; CONST msg, msg2: ARRAY OF CHAR); 
@@ -360,7 +359,7 @@ TYPE
 	PROCEDURE ^ FindSuperProcedure*(scope: SyntaxTree.RecordScope; procedure: SyntaxTree.Procedure): SyntaxTree.Procedure; 
 	PROCEDURE ^ GetConstructor(record: SyntaxTree.RecordType): SyntaxTree.Procedure; 
 	PROCEDURE ^ EnterCase(VAR root: SyntaxTree.CaseConstant; min, max: Basic.Integer): BOOLEAN; 
-	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, useDarwinCCalls, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
+	PROCEDURE ^ NewChecker*(diagnostics: Diagnostics.Diagnostics; verboseErrorMessage, cooperative: BOOLEAN; system: Global.System; symbolFileFormat: Formats.SymbolFileFormat; VAR importCache: SyntaxTree.ModuleScope; CONST backend: ARRAY OF CHAR): Checker; 
 	PROCEDURE ^ NewWarnings*(diagnostics: Diagnostics.Diagnostics): Warnings; 
 	PROCEDURE ^ IsRangeType(type: SyntaxTree.Type): BOOLEAN; 
 	PROCEDURE ^ IsMathArrayType(type: SyntaxTree.Type): BOOLEAN; 

+ 3 - 4
WinAos/obg/FoxSyntaxTree.SymW

@@ -4,10 +4,9 @@ CONST
 	OberonCallingConvention* = 0; 
 	CCallingConvention* = 1; 
 	WinAPICallingConvention* = 2; 
-	DarwinCCallingConvention* = 3; 
-	InterruptCallingConvention* = 4; 
-	PlatformCallingConvention* = 5; 
-	UndefinedCallingConvention* = 6; 
+	InterruptCallingConvention* = 3; 
+	PlatformCallingConvention* = 4; 
+	UndefinedCallingConvention* = 5; 
 	InternalRead* = 0; 
 	InternalWrite* = 1; 
 	ProtectedRead* = 2; 

BIN
WinAos/obg/FoxTRMBackend.GofW


BIN
WinAos/obg/FoxTextualSymbolFile.GofW


BIN
WinAos/obg/Linker.GofW