123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- {
- $Id$
- Copyright (c) 1998-2002 by Peter Vreman
- Convert insns.dat from Nasm to an i386ins.dat for usage with
- the Free pascal compiler
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- program fixnasm;
- {$ifndef FPC}
- procedure readln(var t:text;var s:string);
- var
- c : char;
- i : longint;
- begin
- c:=#0;
- i:=0;
- while (not eof(t)) and (c<>#10) do
- begin
- read(t,c);
- if c<>#10 then
- begin
- inc(i);
- s[i]:=c;
- end;
- end;
- if (i>0) and (s[i]=#13) then
- dec(i);
- s[0]:=chr(i);
- end;
- {$endif}
- const
- spaces=' ';
- var
- t,f : text;
- para,bytes,flags,
- opcode,lastop,
- s : string;
- i,j : longint;
- begin
- writeln('Fixing insns.dat -> i386ins.dat');
- assign(t,'insns.dat');
- reset(t);
- assign(f,'insns.new');
- rewrite(f);
- lastop:='';
- while not eof(t) do
- begin
- readln(t,s);
- if (s<>'') and (s[1]<>';') then
- begin
- i:=pos(' ',s);
- j:=pos(',',s);
- if (j>0) and (j<i) then
- opcode:=Copy(s,1,j-1)
- else
- opcode:=Copy(s,1,i-1);
- if opcode<>lastop then
- begin
- writeln(f,'');
- writeln(f,'[',Copy(s,1,i-1),']');
- writeln(f,'(Ch_All, Ch_None, Ch_None)');
- lastop:=opcode;
- end;
- while (i<length(s)) and (s[i+1]=' ') do
- inc(i);
- Delete(s,1,i);
- i:=pos(' ',s);
- para:=Copy(s,1,i-1);
- para:=para+Copy(spaces,1,22-length(para));
- while (i<length(s)) and (s[i+1]=' ') do
- inc(i);
- Delete(s,1,i);
- i:=pos(' ',s);
- bytes:=Copy(s,1,i-1);
- bytes:=bytes+Copy(spaces,1,32-length(bytes));
- while (i<length(s)) and (s[i+1]=' ') do
- inc(i);
- Delete(s,1,i);
- i:=pos(' ',s);
- if i=0 then
- i:=255;
- flags:=Copy(s,1,i-1);
- writeln(f,para,bytes,flags);
- end
- else
- writeln(f,s);
- end;
- close(f);
- close(t);
- end.
- {
- $Log$
- Revision 1.5 2002-05-18 13:34:27 peter
- * readded missing revisions
- Revision 1.4 2002/05/16 19:46:53 carl
- + defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
- + try to fix temp allocation (still in ifdef)
- + generic constructor calls
- + start of tassembler / tmodulebase class cleanup
- }
|