diff --git a/compiler/mips/racpugas.pas b/compiler/mips/racpugas.pas index 070b4b3d39..de059ad9f7 100644 --- a/compiler/mips/racpugas.pas +++ b/compiler/mips/racpugas.pas @@ -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;