Browse Source

* support X86_64 and NOX86_64 flags

peter 21 years ago
parent
commit
e741991cfc
1 changed files with 32 additions and 22 deletions
  1. 32 22
      compiler/utils/mkx86ins.pp

+ 32 - 22
compiler/utils/mkx86ins.pp

@@ -208,6 +208,7 @@ var
    nopfile,attfile,intfile,
    infile,insfile : text;
    { instruction fields }
+   skip : boolean;
    last,
    ops    : longint;
    intopcode,
@@ -257,8 +258,6 @@ begin
         readln(infile,s);
         while (s[1]=' ') do
          delete(s,1,1);
-        if (s=';!!!x86_64') and not(x86_64) then
-          break;
         if (s='') or (s[1]=';') then
           continue;
         if (s[1]='[') then
@@ -343,6 +342,7 @@ begin
         optypes[3]:='';
         codes:='';
         flags:='';
+        skip:=false;
         { ops and optypes }
         i:=1;
         repeat
@@ -404,12 +404,16 @@ begin
         while not(s[i] in [' ',#9,#13,#10]) and (i<=length(s)) do
           begin
              hs:=readstr;
-             if (hs='ignore') or
-               ((upcase(hs)='X86_64') and not(x86_64)) then
-              begin
-                flags:='0';
-                break;
-              end;
+	     if x86_64 then
+	       begin
+                 if (upcase(hs)='NOX86_64') then
+		   skip:=true;
+	       end
+	     else  
+	       begin
+                 if (upcase(hs)='X86_64') then
+  		   skip:=true;
+	       end;
              if hs<>'ND' then
               begin
                 if flags<>'' then
@@ -421,19 +425,22 @@ begin
              else
               break;
           end;
-      { write instruction }
-        if not(first) then
-          writeln(insfile,',')
-        else
-          first:=false;
-        writeln(insfile,'  (');
-        writeln(insfile,'    opcode  : ',opcode,';');
-        writeln(insfile,'    ops     : ',ops,';');
-        writeln(insfile,'    optypes : (',optypes[1],',',optypes[2],',',optypes[3],');');
-        writeln(insfile,'    code    : ',codes,';');
-        writeln(insfile,'    flags   : ',flags);
-        write(insfile,'  )');
-        inc(insns);
+        { write instruction }
+	if not skip then
+	  begin
+            if not(first) then
+              writeln(insfile,',')
+            else
+              first:=false;
+            writeln(insfile,'  (');
+            writeln(insfile,'    opcode  : ',opcode,';');
+            writeln(insfile,'    ops     : ',ops,';');
+            writeln(insfile,'    optypes : (',optypes[1],',',optypes[2],',',optypes[3],');');
+            writeln(insfile,'    code    : ',codes,';');
+            writeln(insfile,'    flags   : ',flags);
+            write(insfile,'  )');
+            inc(insns);
+	  end;  
      end;
    close(infile);
    closeinc(insfile);
@@ -448,7 +455,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.5  2004-02-03 16:50:51  peter
+  Revision 1.6  2004-02-09 20:30:48  peter
+    * support X86_64 and NOX86_64 flags
+
+  Revision 1.5  2004/02/03 16:50:51  peter
     * linux path separators
 
   Revision 1.4  2004/01/15 14:01:32  florian