* try to fix assmebler highlighting for different cpus

git-svn-id: trunk@7147 -
This commit is contained in:
pierre 2007-04-20 15:38:11 +00:00
parent a70926dd8a
commit c12c929a02

View File

@ -542,9 +542,13 @@ uses
Video,Strings,Keyboard,Validate, Video,Strings,Keyboard,Validate,
globtype,Tokens,Version, globtype,Tokens,Version,
systems,cpubase, systems,cpubase,
itcpugas,
{$if defined(I386) or defined(x64_86)} {$if defined(I386) or defined(x64_86)}
rax86, rax86,
{$endif} {$endif}
{$ifdef m68k}
ag68kgas,
{$endif}
{$ifdef USE_EXTERNAL_COMPILER} {$ifdef USE_EXTERNAL_COMPILER}
fpintf, { superseeds version_string of version unit } fpintf, { superseeds version_string of version unit }
{$endif USE_EXTERNAL_COMPILER} {$endif USE_EXTERNAL_COMPILER}
@ -946,47 +950,68 @@ begin
GetReservedWord:=S; GetReservedWord:=S;
end; end;
{$ifdef powerpc}
{$define USE_TasmCondFlag}
{$define Use_gas_op2str}
{$endif}
{$ifdef powerpc64}
{$define USE_TasmCondFlag}
{$define Use_gas_op2str}
{$endif}
{$ifdef i386}
{$define USE_TasmCond}
{$define Use_std_op2str}
{$endif}
{$ifdef m68k}
{$define USE_None}
{$define Use_gas_op2str}
{$endif}
function GetAsmReservedWordCount: integer; function GetAsmReservedWordCount: integer;
begin begin
GetAsmReservedWordCount:=ord(lastop) - ord(firstop) GetAsmReservedWordCount:=ord(lastop) - ord(firstop)
{$ifndef x86_64} {$ifdef Use_TasmCond}
{$ifndef powerpc}
{$ifndef powerpc64}
{$ifndef arm}
+ CondAsmOps*(ord(high(TasmCond))-ord(low(TasmCond))); + CondAsmOps*(ord(high(TasmCond))-ord(low(TasmCond)));
{$else arm} {$endif Use_TasmCond}
{ the arm has an incredible amount of combinations of opcodes, {$ifdef Use_TasmCondFlag}
we've to solve this different } + CondAsmOps*(ord(high(TasmCondFlag))-ord(low(TasmCondFlag)));
{$endif Use_TasmCondFlag}
{$ifdef Use_None}
; ;
{$endif arm} {$endif Use_None}
{$else powerpc64}
+ CondAsmOps*(ord(high(TAsmCondFlag))-ord(low(TAsmCondFlag)));
{$endif powerpc64}
{$else powerpc}
+ CondAsmOps*(ord(high(TAsmCondFlag))-ord(low(TAsmCondFlag)));
{$endif powerpc}
{$endif x86_64}
end; end;
{$define NOASM}
function GetAsmReservedWord(Index: integer): string; function GetAsmReservedWord(Index: integer): string;
var var
CondNum,CondOpNum : integer; CondNum,CondOpNum : integer;
begin begin
{$ifdef I386}
if index <= ord(lastop) - ord(firstop) then
GetAsmReservedWord:=std_op2str[tasmop(Index+ord(firstop))]
else
begin
index:=index - (ord(lastop) - ord(firstop) );
CondOpNum:= index div (ord(high(TasmCond))-ord(low(TasmCond)));
CondNum:=index - (CondOpNum * (ord(high(TasmCond))-ord(low(TasmCond))));
GetAsmReservedWord:=CondAsmOpStr[CondOpNum]+cond2str[TasmCond(CondNum+ord(low(TAsmCond))+1)];
end;
{$else not I386}
{$ifdef m68k} {$ifdef m68k}
{$undef NOASM}
if index <= ord(lastop) - ord(firstop) then if index <= ord(lastop) - ord(firstop) then
GetAsmReservedWord:=mot_op2str[tasmop(Index+ord(firstop))] GetAsmReservedWord:=gas_op2str[tasmop(Index+ord(firstop))]
else
GetAsmReservedWord:='';
(*
begin
index:=index - (ord(lastop) - ord(firstop) );
CondOpNum:= index div (ord(high(TasmCond))-ord(low(TasmCond)));
CondNum:=index - (CondOpNum * (ord(high(TasmCond))-ord(low(TasmCond))));
GetAsmReservedWord:=CondAsmOpStr[CondOpNum]+cond2str[TasmCond(CondNum+ord(low(TAsmCond))+1)];
end;
*)
{$else not m68k}
if index <= ord(lastop) - ord(firstop) then
{$ifdef Use_gas_op2str}
GetAsmReservedWord:=gas_op2str[tasmop(Index+ord(firstop))]
{$endif Use_gas_op2str}
{$ifdef Use_std_op2str}
GetAsmReservedWord:=std_op2str[tasmop(Index+ord(firstop))]
{$endif Use_std_op2str}
{$ifdef Use_TASMCond}
{$undef NOASM}
else else
begin begin
index:=index - (ord(lastop) - ord(firstop) ); index:=index - (ord(lastop) - ord(firstop) );
@ -994,10 +1019,21 @@ begin
CondNum:=index - (CondOpNum * (ord(high(TasmCond))-ord(low(TasmCond)))); CondNum:=index - (CondOpNum * (ord(high(TasmCond))-ord(low(TasmCond))));
GetAsmReservedWord:=CondAsmOpStr[CondOpNum]+cond2str[TasmCond(CondNum+ord(low(TAsmCond))+1)]; GetAsmReservedWord:=CondAsmOpStr[CondOpNum]+cond2str[TasmCond(CondNum+ord(low(TAsmCond))+1)];
end; end;
{$else not m68k} {$endif Use_TASMCond}
{$ifdef Use_TASMCondFlag}
{$undef NOASM}
else
begin
index:=index - (ord(lastop) - ord(firstop) );
CondOpNum:= index div (ord(high(TasmCondFlag))-ord(low(TasmCondFlag)));
CondNum:=index - (CondOpNum * (ord(high(TasmCondFlag))-ord(low(TasmCondFlag))));
GetAsmReservedWord:=CondAsmOpStr[CondOpNum]+AsmCondFlag2Str[TasmCondFlag(CondNum+ord(low(TAsmCondFlag))+1)];
end;
{$endif Use_TASMCond}
{$endif not m68k}
{$ifdef NOASM}
GetAsmReservedWord:=''; GetAsmReservedWord:='';
{$endif m68k} {$endif NOASM}
{$endif I386}
end; end;
procedure InitReservedWords; procedure InitReservedWords;