소스 검색

Assert that zero/sign extension does not operate on memory operands (i.e. only on registers)

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

+ 4 - 0
source/FoxARMBackend.Mod

@@ -1806,6 +1806,8 @@ TYPE
 				ELSE
 					HALT(100)
 				END
+			ELSIF (sizeInBits < 32)  THEN
+				ASSERT(operand.mode = InstructionSet.modeImmediate);
 			END
 		END ZeroExtendOperand;
 
@@ -1817,6 +1819,8 @@ TYPE
 					Emit2(opMOV, operand, InstructionSet.NewRegister(operand.register, InstructionSet.shiftLSL, None, 32 - sizeInBits));
 					Emit2(opMOV, operand, InstructionSet.NewRegister(operand.register, InstructionSet.shiftASR, None, 32 - sizeInBits))
 				END
+			ELSIF (sizeInBits < 32)  THEN
+				ASSERT(operand.mode = InstructionSet.modeImmediate);
 			END
 		END SignExtendOperand;