Browse Source

* only allow *<reg/ref> when call/jmp is used

peter 26 years ago
parent
commit
b2e44e6445
1 changed files with 14 additions and 2 deletions
  1. 14 2
      compiler/ra386att.pas

+ 14 - 2
compiler/ra386att.pas

@@ -1343,6 +1343,7 @@ Begin
          begin
          begin
            instr.operands[operandnum].operandtype:=OPR_REGISTER;
            instr.operands[operandnum].operandtype:=OPR_REGISTER;
            instr.operands[operandnum].reg:=actasmregister;
            instr.operands[operandnum].reg:=actasmregister;
+           instr.operands[operandnum].size:=reg_2_opsize[actasmregister];
            Consume(AS_REGISTER);
            Consume(AS_REGISTER);
          end
          end
         else
         else
@@ -1351,6 +1352,14 @@ Begin
            if not MaybeBuildReference then
            if not MaybeBuildReference then
             Message(assem_e_syn_opcode_operand);
             Message(assem_e_syn_opcode_operand);
          end;
          end;
+        { this is only allowed for call's and jmp's }
+        case instr.opcode of
+          A_CALL,
+          A_JMP,
+          A_Jcc : ;
+        else
+          Message(assem_e_syn_opcode_operand);
+        end;
       end;
       end;
 
 
     AS_ID: { A constant expression, or a Variable ref.  }
     AS_ID: { A constant expression, or a Variable ref.  }
@@ -1513,7 +1522,7 @@ Begin
              Message(assem_e_invalid_operand_type);
              Message(assem_e_invalid_operand_type);
            instr.operands[operandnum].operandtype:=OPR_REGISTER;
            instr.operands[operandnum].operandtype:=OPR_REGISTER;
            instr.operands[operandnum].reg:=tempreg;
            instr.operands[operandnum].reg:=tempreg;
-           instr.operands[operandnum].size:=reg_2_opsize[instr.operands[operandnum].reg];
+           instr.operands[operandnum].size:=reg_2_opsize[tempreg];
          end
          end
         else
         else
          Message1(assem_e_syn_register,att_reg2str[tempreg]);
          Message1(assem_e_syn_register,att_reg2str[tempreg]);
@@ -2047,7 +2056,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.41  1999-05-01 13:48:39  peter
+  Revision 1.42  1999-05-02 14:25:07  peter
+    * only allow *<reg/ref> when call/jmp is used
+
+  Revision 1.41  1999/05/01 13:48:39  peter
     * merged nasm compiler
     * merged nasm compiler
 
 
   Revision 1.7  1999/04/29 09:37:47  peter
   Revision 1.7  1999/04/29 09:37:47  peter