diff --git a/compiler/m68k/ra68kmot.pas b/compiler/m68k/ra68kmot.pas index d4623777bf..2a61690056 100644 --- a/compiler/m68k/ra68kmot.pas +++ b/compiler/m68k/ra68kmot.pas @@ -78,7 +78,7 @@ unit ra68kmot; function is_register(const s:string):boolean; procedure GetToken; function consume(t : tasmtoken):boolean; - function findopcode(s: string; var opsize: topsize): tasmop; + function findopcode(const s: string; var opsize: topsize): tasmop; Function BuildExpression(allow_symbol : boolean; asmsym : pshortstring) : longint; Procedure BuildConstant(maxvalue: longint); Procedure BuildRealConstant(typ : tfloattype); @@ -86,7 +86,6 @@ unit ra68kmot; Function BuildRefExpression: longint; procedure BuildReference(const oper:tm68koperand); Procedure BuildOperand(const oper:tm68koperand); - Procedure BuildStringConstant(asciiz: boolean); Procedure BuildOpCode(instr:Tm68kinstruction); end; @@ -556,14 +555,10 @@ const {---------------------------------------------------------------------} function tm68kmotreader.consume(t : tasmtoken):boolean; - var - p: pointer; begin Consume:=true; if t<>actasmtoken then begin - p:=nil; - dword(p^):=0; Message2(scan_f_syn_expected,token2str[t],token2str[actasmtoken]); Consume:=false; end; @@ -573,24 +568,21 @@ const end; - function tm68kmotreader.findopcode(s: string; var opsize: topsize): tasmop; + function tm68kmotreader.findopcode(const s: string; var opsize: topsize): tasmop; {*********************************************************************} { FUNCTION findopcode(s: string): tasmop; } { Description: Determines if the s string is a valid opcode } { if so returns correct tasmop token. } {*********************************************************************} var - j: byte; - op_size: string; + j: longint; begin - findopcode := A_NONE; j:=pos('.',s); - if j<>0 then + if (j <> 0) and (j < length(s)) then begin - op_size:=copy(s,j+1,1); - case op_size[1] of + case s[j+1] of { For the motorola only opsize size is used to } - { determine the size of the operands. } + { determine the size of the operands. } 'B': opsize := S_B; 'W': opsize := S_W; 'L': opsize := S_L; @@ -598,10 +590,8 @@ const 'D': opsize := S_FD; 'X': opsize := S_FX; else - Message1(asmr_e_unknown_opcode,s); + Message1(asmr_e_unknown_opcode,s); end; - { delete everything starting from dot } - delete(s,j,length(s)); end; result:=actopcode; end; @@ -1655,46 +1645,6 @@ const end; - - Procedure tm68kmotreader.BuildStringConstant(asciiz: boolean); - {*********************************************************************} - { PROCEDURE BuildStringConstant } - { Description: Takes care of a ASCII, or ASCIIZ directive. } - { asciiz: boolean -> if true then string will be null terminated. } - {*********************************************************************} - { EXIT CONDITION: On exit the routine should point to AS_SEPARATOR. } - { On ENTRY: Token should point to AS_STRING } - {*********************************************************************} - var - expr: string; - errorflag : boolean; - begin - errorflag := FALSE; - Repeat - Case actasmtoken of - AS_STRING: begin - expr:=actasmpattern; - if asciiz then - expr:=expr+#0; - ConcatString(curlist,expr); - Consume(AS_STRING); - end; - AS_COMMA: begin - Consume(AS_COMMA); - END; - AS_SEPARATOR: ; - else - begin - Consume(actasmtoken); - if not errorflag then - Message(asmr_e_invalid_string_expression); - errorflag := TRUE; - end; - end; { end case } - Until actasmtoken = AS_SEPARATOR; - end; - - Procedure TM68kmotReader.BuildOpCode(instr:Tm68kinstruction); {*********************************************************************} { PROCEDURE BuildOpcode; }