mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-11 20:29:14 +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;
|
||||
var
|
||||
len: longint;
|
||||
begin
|
||||
Inherited handledollar;
|
||||
if (c in ['0'..'9','a'..'z']) then
|
||||
len:=1;
|
||||
actasmpattern[len]:='$';
|
||||
c:=current_scanner.asmgetchar;
|
||||
while c in ['A'..'Z','a'..'z','0'..'9'] do
|
||||
begin
|
||||
Consume(AS_DOLLAR);
|
||||
if (actasmtoken=AS_INTNUM) or (actasmtoken=AS_ID) then
|
||||
begin
|
||||
{ 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;
|
||||
inc(len);
|
||||
actasmpattern[len]:=c;
|
||||
c:=current_scanner.asmgetchar;
|
||||
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;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user