Browse Source

* try to fix assmebler highlighting for different cpus

git-svn-id: trunk@7147 -
pierre 18 years ago
parent
commit
c12c929a02
1 changed files with 60 additions and 24 deletions
  1. 60 24
      ide/fpviews.pas

+ 60 - 24
ide/fpviews.pas

@@ -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}
-{$ifndef powerpc}
-{$ifndef powerpc64}
-{$ifndef arm}
+{$ifdef Use_TasmCond}
     + CondAsmOps*(ord(high(TasmCond))-ord(low(TasmCond)));
     + CondAsmOps*(ord(high(TasmCond))-ord(low(TasmCond)));
-{$else arm}
-   { the arm has an incredible amount of combinations of opcodes,
-     we've to solve this different }
-   ;
-{$endif arm}
-{$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}
+{$endif Use_TasmCond}
+{$ifdef Use_TasmCondFlag}
+    + CondAsmOps*(ord(high(TasmCondFlag))-ord(low(TasmCondFlag)));
+{$endif Use_TasmCondFlag}
+{$ifdef Use_None}
+    ;
+{$endif Use_None}
 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}
+{$ifdef m68k}
+{$undef NOASM}
   if index <= ord(lastop) - ord(firstop) then
   if index <= ord(lastop) - ord(firstop) then
-    GetAsmReservedWord:=std_op2str[tasmop(Index+ord(firstop))]
+    GetAsmReservedWord:=gas_op2str[tasmop(Index+ord(firstop))]
   else
   else
+    GetAsmReservedWord:='';
+  (*
     begin
     begin
       index:=index - (ord(lastop) - ord(firstop) );
       index:=index - (ord(lastop) - ord(firstop) );
       CondOpNum:= index div (ord(high(TasmCond))-ord(low(TasmCond)));
       CondOpNum:= index div (ord(high(TasmCond))-ord(low(TasmCond)));
       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 I386}
-{$ifdef m68k}
+    *)
+{$else not m68k}
   if index <= ord(lastop) - ord(firstop) then
   if index <= ord(lastop) - ord(firstop) then
-    GetAsmReservedWord:=mot_op2str[tasmop(Index+ord(firstop))]
+{$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 I386}
+{$endif NOASM}
 end;
 end;
 
 
 procedure InitReservedWords;
 procedure InitReservedWords;