mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 04:29:29 +02:00
* Concatlabel now gives output on error
* in/out bugfix (still ins/outs left to fix)
This commit is contained in:
parent
e78663db17
commit
56cf3c85d3
@ -803,7 +803,7 @@ var
|
||||
{ MOV to rel8 }
|
||||
end
|
||||
else
|
||||
Message(assem_e_invalid_operand);
|
||||
Message1(assem_e_invalid_operand,'');
|
||||
end;
|
||||
|
||||
|
||||
@ -1107,6 +1107,11 @@ var
|
||||
(instruc = A_IN) then
|
||||
Begin
|
||||
operands[1].opinfo := ao_acc;
|
||||
case operands[1].reg of
|
||||
R_EAX: operands[1].size := S_L;
|
||||
R_AX: operands[1].size := S_W;
|
||||
R_AL: operands[1].size := S_B;
|
||||
end;
|
||||
end
|
||||
end
|
||||
else
|
||||
@ -1158,6 +1163,11 @@ var
|
||||
(instruc = A_OUT) then
|
||||
Begin
|
||||
operands[2].opinfo := ao_acc;
|
||||
case operands[2].reg of
|
||||
R_EAX: operands[2].size := S_L;
|
||||
R_AX: operands[2].size := S_W;
|
||||
R_AL: operands[2].size := S_B;
|
||||
end;
|
||||
fits := TRUE;
|
||||
end
|
||||
end;
|
||||
@ -1493,6 +1503,7 @@ var
|
||||
Begin
|
||||
case operands[2].operandtype of
|
||||
OPR_REGISTER:
|
||||
Begin
|
||||
{ see info in ratti386.pas, about the problem }
|
||||
{ which can cause gas here. }
|
||||
if (opsize = operands[2].size) then
|
||||
@ -1501,17 +1512,24 @@ var
|
||||
opsize,operands[1].reg,operands[2].reg)));
|
||||
end
|
||||
else
|
||||
if instruc = A_IN then
|
||||
p^.concat(new(pai386,op_reg_reg(instruc,
|
||||
operands[2].size,operands[1].reg,operands[2].reg)))
|
||||
else
|
||||
if instruc = A_OUT then
|
||||
p^.concat(new(pai386,op_reg_reg(instruc,
|
||||
operands[1].size,operands[1].reg,operands[2].reg)))
|
||||
else
|
||||
{ these do not require any size specification. }
|
||||
if (instruc in [A_IN,A_OUT,A_SAL,A_SAR,A_SHL,A_SHR,A_ROL,
|
||||
if (instruc in [A_SAL,A_SAR,A_SHL,A_SHR,A_ROL,
|
||||
A_ROR,A_RCR,A_RCL]) then
|
||||
{ outs and ins are already taken care by }
|
||||
{ the first pass. }
|
||||
p^.concat(new(pai386,op_reg_reg(instruc,
|
||||
S_NO,operands[1].reg,operands[2].reg)))
|
||||
else
|
||||
Begin
|
||||
Message(assem_e_invalid_opcode_and_operand);
|
||||
end;
|
||||
end;
|
||||
OPR_REFERENCE:
|
||||
{ variable name. }
|
||||
{ here we must check the instruction type }
|
||||
@ -3376,7 +3394,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 1998-09-02 01:23:40 carl
|
||||
Revision 1.8 1998-10-07 04:29:44 carl
|
||||
* Concatlabel now gives output on error
|
||||
* in/out bugfix (still ins/outs left to fix)
|
||||
|
||||
Revision 1.7 1998/09/02 01:23:40 carl
|
||||
* bugfix of operand overrides, VERY stupid bugfix BTW...
|
||||
|
||||
Revision 1.6 1998/08/27 00:42:17 carl
|
||||
|
Loading…
Reference in New Issue
Block a user