Ver Fonte

Patched vector register to stack operation

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8147 8c9fc860-2736-0410-a75d-ab315db34111
felixf há 7 anos atrás
pai
commit
f8f987b281
1 ficheiros alterados com 6 adições e 1 exclusões
  1. 6 1
      source/FoxIntermediateBackend.Mod

+ 6 - 1
source/FoxIntermediateBackend.Mod

@@ -5400,7 +5400,12 @@ TYPE
 							CallAssignMethod(dst, operand.op, parameter.type);
 							RestoreRegisters(saved);
 						END;
-						Emit(Copy(position,sp,operand.op,IntermediateCode.Immediate(addressType,size)));
+						IF operand.op.type.length > 1 THEN (* vector *)
+							MakeMemory(tmp,sp,operand.op.type,0);
+							Emit(Mov(position, tmp, operand.op)); 
+						ELSE
+							Emit(Copy(position,sp,operand.op,IntermediateCode.Immediate(addressType,size)));
+						END;
 					ELSIF IsOpenArray(parameter.type) THEN
 						Designate(expression,operand);
 						baseReg := operand.tag;