瀏覽代碼

corrected push of floating point values less wide than address size

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7447 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 年之前
父節點
當前提交
b38157c723
共有 1 個文件被更改,包括 8 次插入1 次删除
  1. 8 1
      source/FoxAMDBackend.Mod

+ 8 - 1
source/FoxAMDBackend.Mod

@@ -2977,7 +2977,11 @@ TYPE
 			ELSE
 				sizeInBytes := vop.type.sizeInBits DIV 8;
 				length := vop.type.length;
-				AllocateStack(sizeInBytes*length);
+				IF sizeInBytes * length * 8 < cpuBits THEN 
+					AllocateStack(cpuBits DIV 8);
+				ELSE
+					AllocateStack(sizeInBytes*length);
+				END;
 				Assembler.InitMem(memop, SHORTINT(sizeInBytes*length),SP,0);
 				IF backend.forceFPU THEN
 					emitter.Emit1(InstructionSet.opFLD,op); INC(fpStackPointer);
@@ -3605,3 +3609,6 @@ BEGIN
 	Init;
 	usePool := Machine.NumberOfProcessors()>1;
 END FoxAMDBackend.
+
+
+SystemTools.FreeDownTo FoxAMDBackend ~