mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-15 13:09:07 +02:00
* MIPS asm reader: parse dollar sign followed by identifier/number as a single token (register), not as two separate tokens.
git-svn-id: trunk@32971 -
This commit is contained in:
parent
a65ab73e8b
commit
1aec09f8cd
@ -96,32 +96,24 @@ Interface
|
|||||||
|
|
||||||
|
|
||||||
procedure TMipsReader.handledollar;
|
procedure TMipsReader.handledollar;
|
||||||
|
var
|
||||||
|
len: longint;
|
||||||
begin
|
begin
|
||||||
Inherited handledollar;
|
len:=1;
|
||||||
if (c in ['0'..'9','a'..'z']) then
|
actasmpattern[len]:='$';
|
||||||
|
c:=current_scanner.asmgetchar;
|
||||||
|
while c in ['A'..'Z','a'..'z','0'..'9'] do
|
||||||
begin
|
begin
|
||||||
Consume(AS_DOLLAR);
|
inc(len);
|
||||||
if (actasmtoken=AS_INTNUM) or (actasmtoken=AS_ID) then
|
actasmpattern[len]:=c;
|
||||||
begin
|
c:=current_scanner.asmgetchar;
|
||||||
{ Try to convert to std register }
|
|
||||||
if actasmtoken=AS_INTNUM then
|
|
||||||
actasmregister:=gas_regnum_search('$'+actasmpattern)
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
{ AS_ID is uppercased by default but register names
|
|
||||||
are lowercase }
|
|
||||||
actasmpattern:=lower(actasmpattern);
|
|
||||||
actasmregister:=gas_regnum_search(actasmpattern);
|
|
||||||
if actasmregister=NR_NO then
|
|
||||||
actasmregister:=std_regnum_search(actasmpattern);
|
|
||||||
end;
|
|
||||||
if actasmregister<>NR_NO then
|
|
||||||
begin
|
|
||||||
// Consume(actasmtoken);
|
|
||||||
actasmtoken:=AS_REGISTER;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
actasmpattern[0]:=chr(len);
|
||||||
|
actasmpattern:=lower(actasmpattern);
|
||||||
|
actasmregister:=gas_regnum_search(actasmpattern);
|
||||||
|
if actasmregister=NR_NO then
|
||||||
|
actasmregister:=std_regnum_search(copy(actasmpattern,2,maxint));
|
||||||
|
actasmtoken:=AS_REGISTER;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user