12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- {
- 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;
- 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.
|