* fixed trec.field to return constant

This commit is contained in:
peter 2003-10-27 15:29:43 +00:00
parent e2a64130f5
commit d28f3dfdae

View File

@ -1289,6 +1289,8 @@ var
l : longint;
tempstr : string;
begin
if not (opr.typ in [OPR_NONE,OPR_CONSTANT]) then
Message(asmr_e_invalid_operand_type);
BuildConstSymbolExpression(true,false,l,tempstr);
if tempstr<>'' then
begin
@ -1298,8 +1300,13 @@ begin
end
else
begin
opr.typ:=OPR_CONSTANT;
opr.val:=l;
if opr.typ=OPR_NONE then
begin
opr.typ:=OPR_CONSTANT;
opr.val:=l;
end
else
inc(opr.val,l);
end;
end;
@ -1353,6 +1360,11 @@ Begin
inc(opr.val,toffset);
OPR_REFERENCE :
inc(opr.ref.offset,toffset);
OPR_NONE :
begin
opr.typ:=OPR_CONSTANT;
opr.val:=toffset;
end;
else
internalerror(200309222);
end;
@ -1372,8 +1384,6 @@ Begin
AS_NOT,
AS_STRING :
Begin
if not (opr.typ in [OPR_NONE,OPR_CONSTANT]) then
Message(asmr_e_invalid_operand_type);
BuildConstant;
end;
@ -1461,7 +1471,6 @@ Begin
else
{ is it a normal variable ? }
Begin
InitRef;
expr:=actasmpattern;
Consume(AS_ID);
{ typecasting? }
@ -1478,15 +1487,18 @@ Begin
end;
end
else
if not SetupVar(expr,false) then
Begin
{ not a variable, check special variables.. }
if expr = 'SELF' then
SetupSelf
else
Message1(sym_e_unknown_id,expr);
expr:='';
end;
begin
InitRef;
if not SetupVar(expr,false) then
Begin
{ not a variable, check special variables.. }
if expr = 'SELF' then
SetupSelf
else
Message1(sym_e_unknown_id,expr);
expr:='';
end;
end;
end;
end;
end;
@ -1894,7 +1906,10 @@ finalization
end.
{
$Log$
Revision 1.59 2003-10-24 17:39:03 peter
Revision 1.60 2003-10-27 15:29:43 peter
* fixed trec.field to return constant
Revision 1.59 2003/10/24 17:39:03 peter
* more intel parser updates
Revision 1.58 2003/10/23 17:19:44 peter