소스 검색

Return (WinAPI 64 bit) needs a 0

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7416 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 년 전
부모
커밋
ddba57bf50
1개의 변경된 파일3개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 2
      source/FoxAMDBackend.Mod

+ 3 - 2
source/FoxAMDBackend.Mod

@@ -1353,10 +1353,11 @@ TYPE
 		END EmitLeave;
 
 		PROCEDURE EmitExit(CONST instruction: IntermediateCode.Instruction);
-		VAR parSize: LONGINT; operand: Assembler.Operand;
+		VAR parSize,cc: LONGINT; operand: Assembler.Operand;
 		BEGIN
+			cc := SHORT(instruction.op2.intValue);
 			parSize := SHORT(instruction.op3.intValue);
-			IF parSize = 0 THEN
+			IF (parSize = 0) OR (cc = SyntaxTree.WinAPICallingConvention) & (cpuBits = 64) THEN
 				emitter.Emit0(InstructionSet.opRET)
 			ELSE (* e.g. for WINAPI calling convention *)
 				operand := Assembler.NewImm16(parSize);