Browse Source

+ ait_marker support

Jonas Maebe 27 years ago
parent
commit
5b3312c7ed
6 changed files with 50 additions and 653 deletions
  1. 26 1
      compiler/aasm.pas
  2. 4 648
      compiler/ag386int.pas
  3. 5 1
      compiler/ag386nsm.pas
  4. 5 1
      compiler/ag68kgas.pas
  5. 5 1
      compiler/ag68kmit.pas
  6. 5 1
      compiler/ag68kmot.pas

+ 26 - 1
compiler/aasm.pas

@@ -69,6 +69,7 @@ unit aasm;
           ait_cut, { used to split into tiny assembler files }
           ait_cut, { used to split into tiny assembler files }
           ait_regalloc,
           ait_regalloc,
           ait_regdealloc,
           ait_regdealloc,
+          ait_marker,
           { never used, makes insertation of new ait_ easier to type }
           { never used, makes insertation of new ait_ easier to type }
           ait_dummy);
           ait_dummy);
 
 
@@ -244,6 +245,14 @@ unit aasm;
           constructor init_end;
           constructor init_end;
        end;
        end;
 
 
+       TMarker = (NoPropInfoStart, NoPropInfoEnd);
+       pai_marker = ^tai_marker;
+       tai_marker = object(tai)
+         Kind: TMarker;
+         Constructor init(_Kind: TMarker);
+       end;
+
+
 { for each processor define the best precision }
 { for each processor define the best precision }
 { bestreal is defined in globals }
 { bestreal is defined in globals }
 {$ifdef i386}
 {$ifdef i386}
@@ -691,6 +700,19 @@ uses
           endname:=true;
           endname:=true;
        end;
        end;
 
 
+
+{****************************************************************************
+                             Tai_Marker
+ ****************************************************************************}
+
+     Constructor Tai_Marker.Init(_Kind: TMarker);
+     Begin
+       Inherited Init;
+       typ := ait_marker;
+       Kind := _Kind;
+     End;
+
+
 {*****************************************************************************
 {*****************************************************************************
                            External Helpers
                            External Helpers
 *****************************************************************************}
 *****************************************************************************}
@@ -850,7 +872,10 @@ uses
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.18  1998-09-20 17:11:25  jonas
+  Revision 1.19  1998-10-01 20:19:11  jonas
+    + ait_marker support
+
+  Revision 1.18  1998/09/20 17:11:25  jonas
     * released REGALLOC
     * released REGALLOC
 
 
   Revision 1.17  1998/09/07 18:33:31  peter
   Revision 1.17  1998/09/07 18:33:31  peter

+ 4 - 648
compiler/ag386int.pas

@@ -1,1297 +1,653 @@
 {
 {
-
     $Id$
     $Id$
-
     Copyright (c) 1996,97 by Florian Klaempfl
     Copyright (c) 1996,97 by Florian Klaempfl
 
 
-
-
     This unit implements an asmoutput class for Intel syntax with Intel i386+
     This unit implements an asmoutput class for Intel syntax with Intel i386+
 
 
-
-
     This program is free software; you can redistribute it and/or modify
     This program is free software; you can redistribute it and/or modify
-
     it under the terms of the GNU General Public License as published by
     it under the terms of the GNU General Public License as published by
-
     the Free Software Foundation; either version 2 of the License, or
     the Free Software Foundation; either version 2 of the License, or
-
     (at your option) any later version.
     (at your option) any later version.
 
 
-
-
     This program is distributed in the hope that it will be useful,
     This program is distributed in the hope that it will be useful,
-
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     but WITHOUT ANY WARRANTY; without even the implied warranty of
-
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-
     GNU General Public License for more details.
     GNU General Public License for more details.
 
 
-
-
     You should have received a copy of the GNU General Public License
     You should have received a copy of the GNU General Public License
-
     along with this program; if not, write to the Free Software
     along with this program; if not, write to the Free Software
-
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 
-
-
  ****************************************************************************
  ****************************************************************************
-
 }
 }
-
 unit ag386int;
 unit ag386int;
 
 
-
-
     interface
     interface
 
 
-
-
     uses aasm,assemble;
     uses aasm,assemble;
 
 
-
-
     type
     type
-
       pi386intasmlist=^ti386intasmlist;
       pi386intasmlist=^ti386intasmlist;
-
       ti386intasmlist = object(tasmlist)
       ti386intasmlist = object(tasmlist)
-
         procedure WriteTree(p:paasmoutput);virtual;
         procedure WriteTree(p:paasmoutput);virtual;
-
         procedure WriteAsmList;virtual;
         procedure WriteAsmList;virtual;
-
       end;
       end;
 
 
-
-
   implementation
   implementation
 
 
-
-
     uses
     uses
-
       dos,globals,systems,cobjects,i386,
       dos,globals,systems,cobjects,i386,
-
       strings,files,verbose
       strings,files,verbose
-
 {$ifdef GDB}
 {$ifdef GDB}
-
       ,gdb
       ,gdb
-
 {$endif GDB}
 {$endif GDB}
-
       ;
       ;
 
 
-
-
     const
     const
-
       line_length = 70;
       line_length = 70;
 
 
-
-
       extstr : array[EXT_NEAR..EXT_ABS] of String[8] =
       extstr : array[EXT_NEAR..EXT_ABS] of String[8] =
-
              ('NEAR','FAR','PROC','BYTE','WORD','DWORD',
              ('NEAR','FAR','PROC','BYTE','WORD','DWORD',
-
               'CODEPTR','DATAPTR','FWORD','PWORD','QWORD','TBYTE','ABS');
               'CODEPTR','DATAPTR','FWORD','PWORD','QWORD','TBYTE','ABS');
 
 
 
 
-
-
-
     function double2str(d : double) : string;
     function double2str(d : double) : string;
-
       var
       var
-
          hs : string;
          hs : string;
-
          p : byte;
          p : byte;
-
       begin
       begin
-
          str(d,hs);
          str(d,hs);
-
       { nasm expects a lowercase e }
       { nasm expects a lowercase e }
-
          p:=pos('E',hs);
          p:=pos('E',hs);
-
          if p>0 then
          if p>0 then
-
           hs[p]:='e';
           hs[p]:='e';
-
          p:=pos('+',hs);
          p:=pos('+',hs);
-
          if p>0 then
          if p>0 then
-
           delete(hs,p,1);
           delete(hs,p,1);
-
          double2str:=lower(hs);
          double2str:=lower(hs);
-
       end;
       end;
 
 
-
-
     function extended2str(e : extended) : string;
     function extended2str(e : extended) : string;
-
       var
       var
-
          hs : string;
          hs : string;
-
          p : byte;
          p : byte;
-
       begin
       begin
-
 {$ifdef VER0_99_5}
 {$ifdef VER0_99_5}
-
          str(double(e),hs);
          str(double(e),hs);
-
 {$else}
 {$else}
-
          str(e,hs);
          str(e,hs);
-
 {$endif}
 {$endif}
-
       { nasm expects a lowercase e }
       { nasm expects a lowercase e }
-
          p:=pos('E',hs);
          p:=pos('E',hs);
-
          if p>0 then
          if p>0 then
-
           hs[p]:='e';
           hs[p]:='e';
-
          p:=pos('+',hs);
          p:=pos('+',hs);
-
          if p>0 then
          if p>0 then
-
           delete(hs,p,1);
           delete(hs,p,1);
-
          extended2str:=lower(hs);
          extended2str:=lower(hs);
-
       end;
       end;
 
 
 
 
-
-
-
     function comp2str(d : bestreal) : string;
     function comp2str(d : bestreal) : string;
-
       type
       type
-
         pdouble = ^double;
         pdouble = ^double;
-
       var
       var
-
         c  : comp;
         c  : comp;
-
         dd : pdouble;
         dd : pdouble;
-
       begin
       begin
-
       {$ifdef TP}
       {$ifdef TP}
-
          c:=d;
          c:=d;
-
       {$else}
       {$else}
-
          c:=comp(d);
          c:=comp(d);
-
        {$endif}
        {$endif}
-
          dd:=pdouble(@c); { this makes a bitwise copy of c into a double }
          dd:=pdouble(@c); { this makes a bitwise copy of c into a double }
-
          comp2str:=double2str(dd^);
          comp2str:=double2str(dd^);
-
       end;
       end;
 
 
-
-
     function getreferencestring(const ref : treference) : string;
     function getreferencestring(const ref : treference) : string;
-
     var
     var
-
       s     : string;
       s     : string;
-
       first : boolean;
       first : boolean;
-
     begin
     begin
-
       if ref.isintvalue then
       if ref.isintvalue then
-
        s:= tostr(ref.offset)
        s:= tostr(ref.offset)
-
       else
       else
-
       with ref do
       with ref do
-
         begin
         begin
-
           first:=true;
           first:=true;
-
           if ref.segment<>R_DEFAULT_SEG then
           if ref.segment<>R_DEFAULT_SEG then
-
            s:=int_reg2str[segment]+':['
            s:=int_reg2str[segment]+':['
-
           else
           else
-
            s:='[';
            s:='[';
-
          if assigned(symbol) then
          if assigned(symbol) then
-
           begin
           begin
-
             s:=s+symbol^;
             s:=s+symbol^;
-
             first:=false;
             first:=false;
-
           end;
           end;
-
          if (base<>R_NO) then
          if (base<>R_NO) then
-
           begin
           begin
-
             if not(first) then
             if not(first) then
-
              s:=s+'+'
              s:=s+'+'
-
             else
             else
-
              first:=false;
              first:=false;
-
              s:=s+int_reg2str[base];
              s:=s+int_reg2str[base];
-
           end;
           end;
-
          if (index<>R_NO) then
          if (index<>R_NO) then
-
            begin
            begin
-
              if not(first) then
              if not(first) then
-
                s:=s+'+'
                s:=s+'+'
-
              else
              else
-
                first:=false;
                first:=false;
-
              s:=s+int_reg2str[index];
              s:=s+int_reg2str[index];
-
              if scalefactor<>0 then
              if scalefactor<>0 then
-
                s:=s+'*'+tostr(scalefactor);
                s:=s+'*'+tostr(scalefactor);
-
            end;
            end;
-
          if offset<0 then
          if offset<0 then
-
            s:=s+tostr(offset)
            s:=s+tostr(offset)
-
          else if (offset>0) then
          else if (offset>0) then
-
            s:=s+'+'+tostr(offset);
            s:=s+'+'+tostr(offset);
-
          s:=s+']';
          s:=s+']';
-
         end;
         end;
-
        getreferencestring:=s;
        getreferencestring:=s;
-
      end;
      end;
 
 
-
-
     function getopstr(t : byte;o : pointer;s : topsize; _operator: tasmop;dest : boolean) : string;
     function getopstr(t : byte;o : pointer;s : topsize; _operator: tasmop;dest : boolean) : string;
-
     var
     var
-
       hs : string;
       hs : string;
-
     begin
     begin
-
       case t of
       case t of
-
        top_reg : getopstr:=int_reg2str[tregister(o)];
        top_reg : getopstr:=int_reg2str[tregister(o)];
-
      top_const,
      top_const,
-
        top_ref : begin
        top_ref : begin
-
                    if t=top_const then
                    if t=top_const then
-
                      hs := tostr(longint(o))
                      hs := tostr(longint(o))
-
                    else
                    else
-
                      hs:=getreferencestring(preference(o)^);
                      hs:=getreferencestring(preference(o)^);
-
                    { can possibly give a range check error under tp }
                    { can possibly give a range check error under tp }
-
                    { if using in...                                 }
                    { if using in...                                 }
-
                    if ((_operator <> A_LGS) and (_operator <> A_LSS) and
                    if ((_operator <> A_LGS) and (_operator <> A_LSS) and
-
                        (_operator <> A_LFS) and (_operator <> A_LDS) and
                        (_operator <> A_LFS) and (_operator <> A_LDS) and
-
                        (_operator <> A_LES)) then
                        (_operator <> A_LES)) then
-
                     Begin
                     Begin
-
                       case s of
                       case s of
-
                        S_B : hs:='byte ptr '+hs;
                        S_B : hs:='byte ptr '+hs;
-
                        S_W : hs:='word ptr '+hs;
                        S_W : hs:='word ptr '+hs;
-
                        S_L : hs:='dword ptr '+hs;
                        S_L : hs:='dword ptr '+hs;
-
                       S_IS : hs:='word ptr '+hs;
                       S_IS : hs:='word ptr '+hs;
-
                       S_IL : hs:='dword ptr '+hs;
                       S_IL : hs:='dword ptr '+hs;
-
                       S_IQ : hs:='qword ptr '+hs;
                       S_IQ : hs:='qword ptr '+hs;
-
                       S_FS : hs:='dword ptr '+hs;
                       S_FS : hs:='dword ptr '+hs;
-
                       S_FL : hs:='qword ptr '+hs;
                       S_FL : hs:='qword ptr '+hs;
-
                       S_FX : hs:='tbyte ptr '+hs;
                       S_FX : hs:='tbyte ptr '+hs;
-
                       S_BW : if dest then
                       S_BW : if dest then
-
                               hs:='word ptr '+hs
                               hs:='word ptr '+hs
-
                              else
                              else
-
                               hs:='byte ptr '+hs;
                               hs:='byte ptr '+hs;
-
                       S_BL : if dest then
                       S_BL : if dest then
-
                               hs:='dword ptr '+hs
                               hs:='dword ptr '+hs
-
                              else
                              else
-
                               hs:='byte ptr '+hs;
                               hs:='byte ptr '+hs;
-
                       S_WL : if dest then
                       S_WL : if dest then
-
                               hs:='dword ptr '+hs
                               hs:='dword ptr '+hs
-
                              else
                              else
-
                               hs:='word ptr '+hs;
                               hs:='word ptr '+hs;
-
                       end;
                       end;
-
                     end;
                     end;
-
                    getopstr:=hs;
                    getopstr:=hs;
-
                  end;
                  end;
-
     top_symbol : begin
     top_symbol : begin
-
                    hs[0]:=chr(strlen(pchar(pcsymbol(o)^.symbol)));
                    hs[0]:=chr(strlen(pchar(pcsymbol(o)^.symbol)));
-
                    move(pchar(pcsymbol(o)^.symbol)^,hs[1],byte(hs[0]));
                    move(pchar(pcsymbol(o)^.symbol)^,hs[1],byte(hs[0]));
-
                    hs:='offset '+hs;
                    hs:='offset '+hs;
-
                    if pcsymbol(o)^.offset>0 then
                    if pcsymbol(o)^.offset>0 then
-
                     hs:=hs+'+'+tostr(pcsymbol(o)^.offset)
                     hs:=hs+'+'+tostr(pcsymbol(o)^.offset)
-
                    else
                    else
-
                     if pcsymbol(o)^.offset<0 then
                     if pcsymbol(o)^.offset<0 then
-
                      hs:=hs+tostr(pcsymbol(o)^.offset);
                      hs:=hs+tostr(pcsymbol(o)^.offset);
-
                    getopstr:=hs;
                    getopstr:=hs;
-
                  end;
                  end;
-
       else
       else
-
        internalerror(10001);
        internalerror(10001);
-
       end;
       end;
-
     end;
     end;
 
 
-
-
     function getopstr_jmp(t : byte;o : pointer) : string;
     function getopstr_jmp(t : byte;o : pointer) : string;
-
     var
     var
-
       hs : string;
       hs : string;
-
     begin
     begin
-
       case t of
       case t of
-
          top_reg : getopstr_jmp:=int_reg2str[tregister(o)];
          top_reg : getopstr_jmp:=int_reg2str[tregister(o)];
-
          top_ref : getopstr_jmp:=getreferencestring(preference(o)^);
          top_ref : getopstr_jmp:=getreferencestring(preference(o)^);
-
        top_const : getopstr_jmp:=tostr(longint(o));
        top_const : getopstr_jmp:=tostr(longint(o));
-
        top_symbol : begin
        top_symbol : begin
-
                       hs[0]:=chr(strlen(pchar(pcsymbol(o)^.symbol)));
                       hs[0]:=chr(strlen(pchar(pcsymbol(o)^.symbol)));
-
                       move(pchar(pcsymbol(o)^.symbol)^,hs[1],byte(hs[0]));
                       move(pchar(pcsymbol(o)^.symbol)^,hs[1],byte(hs[0]));
-
                       if pcsymbol(o)^.offset>0 then
                       if pcsymbol(o)^.offset>0 then
-
                         hs:=hs+'+'+tostr(pcsymbol(o)^.offset)
                         hs:=hs+'+'+tostr(pcsymbol(o)^.offset)
-
                       else
                       else
-
                         if pcsymbol(o)^.offset<0 then
                         if pcsymbol(o)^.offset<0 then
-
                           hs:=hs+tostr(pcsymbol(o)^.offset);
                           hs:=hs+tostr(pcsymbol(o)^.offset);
-
                       getopstr_jmp:=hs;
                       getopstr_jmp:=hs;
-
                     end;
                     end;
-
       else
       else
-
        internalerror(10001);
        internalerror(10001);
-
       end;
       end;
-
     end;
     end;
 
 
 
 
-
-
-
 {****************************************************************************
 {****************************************************************************
-
                                TI386INTASMLIST
                                TI386INTASMLIST
-
  ****************************************************************************}
  ****************************************************************************}
 
 
-
-
     var
     var
-
       LastSec : tsection;
       LastSec : tsection;
 
 
-
-
     const
     const
-
       ait_const2str:array[ait_const_32bit..ait_const_8bit] of string[8]=
       ait_const2str:array[ait_const_32bit..ait_const_8bit] of string[8]=
-
         (#9'DD'#9,'',#9'DW'#9,#9'DB'#9);
         (#9'DD'#9,'',#9'DW'#9,#9'DB'#9);
 
 
-
-
       ait_section2masmstr : array[tsection] of string[6]=
       ait_section2masmstr : array[tsection] of string[6]=
-
        ('','CODE','DATA','BSS','');
        ('','CODE','DATA','BSS','');
 
 
 
 
-
-
-
     Function PadTabs(p:pchar;addch:char):string;
     Function PadTabs(p:pchar;addch:char):string;
-
     var
     var
-
       s : string;
       s : string;
-
       i : longint;
       i : longint;
-
     begin
     begin
-
       i:=strlen(p);
       i:=strlen(p);
-
       if addch<>#0 then
       if addch<>#0 then
-
        begin
        begin
-
          inc(i);
          inc(i);
-
          s:=StrPas(p)+addch;
          s:=StrPas(p)+addch;
-
        end
        end
-
       else
       else
-
        s:=StrPas(p);
        s:=StrPas(p);
-
       if i<8 then
       if i<8 then
-
        PadTabs:=s+#9#9
        PadTabs:=s+#9#9
-
       else
       else
-
        PadTabs:=s+#9;
        PadTabs:=s+#9;
-
     end;
     end;
 
 
-
-
     procedure ti386intasmlist.WriteTree(p:paasmoutput);
     procedure ti386intasmlist.WriteTree(p:paasmoutput);
-
     type
     type
-
       twowords=record
       twowords=record
-
         word1,word2:word;
         word1,word2:word;
-
       end;
       end;
-
     var
     var
-
       s,
       s,
-
       prefix,
       prefix,
-
       suffix   : string;
       suffix   : string;
-
       hp       : pai;
       hp       : pai;
-
       counter,
       counter,
-
       lines,
       lines,
-
       i,j,l    : longint;
       i,j,l    : longint;
-
       consttyp : tait;
       consttyp : tait;
-
       found,
       found,
-
       quoted   : boolean;
       quoted   : boolean;
-
     begin
     begin
-
       if not assigned(p) then
       if not assigned(p) then
-
        exit;
        exit;
-
       hp:=pai(p^.first);
       hp:=pai(p^.first);
-
       while assigned(hp) do
       while assigned(hp) do
-
        begin
        begin
-
          case hp^.typ of
          case hp^.typ of
-
        ait_comment : Begin
        ait_comment : Begin
-
                        AsmWrite(target_asm.comment);
                        AsmWrite(target_asm.comment);
-
                        AsmWritePChar(pai_asm_comment(hp)^.str);
                        AsmWritePChar(pai_asm_comment(hp)^.str);
-
                        AsmLn;
                        AsmLn;
-
                      End;
                      End;
-
      ait_regalloc,
      ait_regalloc,
-
     ait_regdealloc :;
     ait_regdealloc :;
-
        ait_section : begin
        ait_section : begin
-
                        if LastSec<>sec_none then
                        if LastSec<>sec_none then
-
                         AsmWriteLn('_'+ait_section2masmstr[LastSec]+#9#9'ENDS');
                         AsmWriteLn('_'+ait_section2masmstr[LastSec]+#9#9'ENDS');
-
                        if pai_section(hp)^.sec<>sec_none then
                        if pai_section(hp)^.sec<>sec_none then
-
                         begin
                         begin
-
                           AsmLn;
                           AsmLn;
-
                           AsmWriteLn('_'+ait_section2masmstr[pai_section(hp)^.sec]+#9#9+
                           AsmWriteLn('_'+ait_section2masmstr[pai_section(hp)^.sec]+#9#9+
-
                                      'SEGMENT'#9'PARA PUBLIC USE32 '''+
                                      'SEGMENT'#9'PARA PUBLIC USE32 '''+
-
                                      ait_section2masmstr[pai_section(hp)^.sec]+'''');
                                      ait_section2masmstr[pai_section(hp)^.sec]+'''');
-
                         end;
                         end;
-
                        LastSec:=pai_section(hp)^.sec;
                        LastSec:=pai_section(hp)^.sec;
-
                      end;
                      end;
-
          ait_align : begin
          ait_align : begin
-
                      { CAUSES PROBLEMS WITH THE SEGMENT DEFINITION   }
                      { CAUSES PROBLEMS WITH THE SEGMENT DEFINITION   }
-
                      { SEGMENT DEFINITION SHOULD MATCH TYPE OF ALIGN }
                      { SEGMENT DEFINITION SHOULD MATCH TYPE OF ALIGN }
-
                      { HERE UNDER TASM!                              }
                      { HERE UNDER TASM!                              }
-
                        AsmWriteLn(#9'ALIGN '+tostr(pai_align(hp)^.aligntype));
                        AsmWriteLn(#9'ALIGN '+tostr(pai_align(hp)^.aligntype));
-
                      end;
                      end;
-
       ait_external : AsmWriteLn(#9'EXTRN'#9+StrPas(pai_external(hp)^.name)+
       ait_external : AsmWriteLn(#9'EXTRN'#9+StrPas(pai_external(hp)^.name)+
-
                                 ' :'+extstr[pai_external(hp)^.exttyp]);
                                 ' :'+extstr[pai_external(hp)^.exttyp]);
-
      ait_datablock : begin
      ait_datablock : begin
-
                        if pai_datablock(hp)^.is_global then
                        if pai_datablock(hp)^.is_global then
-
                          AsmWriteLn(#9'PUBLIC'#9+StrPas(pai_datablock(hp)^.name));
                          AsmWriteLn(#9'PUBLIC'#9+StrPas(pai_datablock(hp)^.name));
-
                        AsmWriteLn(PadTabs(pai_datablock(hp)^.name,#0)+'DB'#9+tostr(pai_datablock(hp)^.size)+' DUP(?)');
                        AsmWriteLn(PadTabs(pai_datablock(hp)^.name,#0)+'DB'#9+tostr(pai_datablock(hp)^.size)+' DUP(?)');
-
                      end;
                      end;
-
    ait_const_32bit,
    ait_const_32bit,
-
     ait_const_8bit,
     ait_const_8bit,
-
    ait_const_16bit : begin
    ait_const_16bit : begin
-
                        AsmWrite(ait_const2str[hp^.typ]+tostr(pai_const(hp)^.value));
                        AsmWrite(ait_const2str[hp^.typ]+tostr(pai_const(hp)^.value));
-
                        consttyp:=hp^.typ;
                        consttyp:=hp^.typ;
-
                        l:=0;
                        l:=0;
-
                        repeat
                        repeat
-
                          found:=(not (Pai(hp^.next)=nil)) and (Pai(hp^.next)^.typ=consttyp);
                          found:=(not (Pai(hp^.next)=nil)) and (Pai(hp^.next)^.typ=consttyp);
-
                          if found then
                          if found then
-
                           begin
                           begin
-
                             hp:=Pai(hp^.next);
                             hp:=Pai(hp^.next);
-
                             s:=','+tostr(pai_const(hp)^.value);
                             s:=','+tostr(pai_const(hp)^.value);
-
                             AsmWrite(s);
                             AsmWrite(s);
-
                             inc(l,length(s));
                             inc(l,length(s));
-
                           end;
                           end;
-
                        until (not found) or (l>line_length);
                        until (not found) or (l>line_length);
-
                        AsmLn;
                        AsmLn;
-
                      end;
                      end;
-
   ait_const_symbol : begin
   ait_const_symbol : begin
-
                        AsmWrite(#9#9+'DD '#9'offset ');
                        AsmWrite(#9#9+'DD '#9'offset ');
-
                        AsmWritePChar(pchar(pai_const(hp)^.value));
                        AsmWritePChar(pchar(pai_const(hp)^.value));
-
                        AsmLn;
                        AsmLn;
-
                      end;
                      end;
-
     ait_real_32bit : AsmWriteLn(#9#9'DD'#9+double2str(pai_single(hp)^.value));
     ait_real_32bit : AsmWriteLn(#9#9'DD'#9+double2str(pai_single(hp)^.value));
-
     ait_real_64bit : AsmWriteLn(#9#9'DQ'#9+double2str(pai_double(hp)^.value));
     ait_real_64bit : AsmWriteLn(#9#9'DQ'#9+double2str(pai_double(hp)^.value));
-
  ait_real_extended : AsmWriteLn(#9#9'DT'#9+extended2str(pai_extended(hp)^.value));
  ait_real_extended : AsmWriteLn(#9#9'DT'#9+extended2str(pai_extended(hp)^.value));
-
           ait_comp : AsmWriteLn(#9#9'DQ'#9+comp2str(pai_extended(hp)^.value));
           ait_comp : AsmWriteLn(#9#9'DQ'#9+comp2str(pai_extended(hp)^.value));
-
         ait_string : begin
         ait_string : begin
-
                        counter := 0;
                        counter := 0;
-
                        lines := pai_string(hp)^.len div line_length;
                        lines := pai_string(hp)^.len div line_length;
-
                      { separate lines in different parts }
                      { separate lines in different parts }
-
                        if pai_string(hp)^.len > 0 then
                        if pai_string(hp)^.len > 0 then
-
                         Begin
                         Begin
-
                           for j := 0 to lines-1 do
                           for j := 0 to lines-1 do
-
                            begin
                            begin
-
                              AsmWrite(#9#9'DB'#9);
                              AsmWrite(#9#9'DB'#9);
-
                              quoted:=false;
                              quoted:=false;
-
                              for i:=counter to counter+line_length do
                              for i:=counter to counter+line_length do
-
                                 begin
                                 begin
-
                                   { it is an ascii character. }
                                   { it is an ascii character. }
-
                                   if (ord(pai_string(hp)^.str[i])>31) and
                                   if (ord(pai_string(hp)^.str[i])>31) and
-
                                      (ord(pai_string(hp)^.str[i])<128) and
                                      (ord(pai_string(hp)^.str[i])<128) and
-
                                      (pai_string(hp)^.str[i]<>'"') then
                                      (pai_string(hp)^.str[i]<>'"') then
-
                                       begin
                                       begin
-
                                         if not(quoted) then
                                         if not(quoted) then
-
                                             begin
                                             begin
-
                                               if i>counter then
                                               if i>counter then
-
                                                 AsmWrite(',');
                                                 AsmWrite(',');
-
                                               AsmWrite('"');
                                               AsmWrite('"');
-
                                             end;
                                             end;
-
                                         AsmWrite(pai_string(hp)^.str[i]);
                                         AsmWrite(pai_string(hp)^.str[i]);
-
                                         quoted:=true;
                                         quoted:=true;
-
                                       end { if > 31 and < 128 and ord('"') }
                                       end { if > 31 and < 128 and ord('"') }
-
                                   else
                                   else
-
                                       begin
                                       begin
-
                                           if quoted then
                                           if quoted then
-
                                               AsmWrite('"');
                                               AsmWrite('"');
-
                                           if i>counter then
                                           if i>counter then
-
                                               AsmWrite(',');
                                               AsmWrite(',');
-
                                           quoted:=false;
                                           quoted:=false;
-
                                           AsmWrite(tostr(ord(pai_string(hp)^.str[i])));
                                           AsmWrite(tostr(ord(pai_string(hp)^.str[i])));
-
                                       end;
                                       end;
-
                                end; { end for i:=0 to... }
                                end; { end for i:=0 to... }
-
                              if quoted then AsmWrite('"');
                              if quoted then AsmWrite('"');
-
                                AsmWrite(target_os.newline);
                                AsmWrite(target_os.newline);
-
                              counter := counter+line_length;
                              counter := counter+line_length;
-
                           end; { end for j:=0 ... }
                           end; { end for j:=0 ... }
-
                         { do last line of lines }
                         { do last line of lines }
-
                         AsmWrite(#9#9'DB'#9);
                         AsmWrite(#9#9'DB'#9);
-
                         quoted:=false;
                         quoted:=false;
-
                         for i:=counter to pai_string(hp)^.len-1 do
                         for i:=counter to pai_string(hp)^.len-1 do
-
                           begin
                           begin
-
                             { it is an ascii character. }
                             { it is an ascii character. }
-
                             if (ord(pai_string(hp)^.str[i])>31) and
                             if (ord(pai_string(hp)^.str[i])>31) and
-
                                (ord(pai_string(hp)^.str[i])<128) and
                                (ord(pai_string(hp)^.str[i])<128) and
-
                                (pai_string(hp)^.str[i]<>'"') then
                                (pai_string(hp)^.str[i]<>'"') then
-
                                 begin
                                 begin
-
                                   if not(quoted) then
                                   if not(quoted) then
-
                                       begin
                                       begin
-
                                         if i>counter then
                                         if i>counter then
-
                                           AsmWrite(',');
                                           AsmWrite(',');
-
                                         AsmWrite('"');
                                         AsmWrite('"');
-
                                       end;
                                       end;
-
                                   AsmWrite(pai_string(hp)^.str[i]);
                                   AsmWrite(pai_string(hp)^.str[i]);
-
                                   quoted:=true;
                                   quoted:=true;
-
                                 end { if > 31 and < 128 and " }
                                 end { if > 31 and < 128 and " }
-
                             else
                             else
-
                                 begin
                                 begin
-
                                   if quoted then
                                   if quoted then
-
                                     AsmWrite('"');
                                     AsmWrite('"');
-
                                   if i>counter then
                                   if i>counter then
-
                                       AsmWrite(',');
                                       AsmWrite(',');
-
                                   quoted:=false;
                                   quoted:=false;
-
                                   AsmWrite(tostr(ord(pai_string(hp)^.str[i])));
                                   AsmWrite(tostr(ord(pai_string(hp)^.str[i])));
-
                                 end;
                                 end;
-
                           end; { end for i:=0 to... }
                           end; { end for i:=0 to... }
-
                         if quoted then
                         if quoted then
-
                           AsmWrite('"');
                           AsmWrite('"');
-
                         end;
                         end;
-
                        AsmLn;
                        AsmLn;
-
                      end;
                      end;
-
          ait_label : begin
          ait_label : begin
-
                        if pai_label(hp)^.l^.is_used then
                        if pai_label(hp)^.l^.is_used then
-
                         begin
                         begin
-
                           AsmWrite(lab2str(pai_label(hp)^.l));
                           AsmWrite(lab2str(pai_label(hp)^.l));
-
                           if (assigned(hp^.next) and not(pai(hp^.next)^.typ in
                           if (assigned(hp^.next) and not(pai(hp^.next)^.typ in
-
                              [ait_const_32bit,ait_const_16bit,ait_const_8bit,ait_const_symbol,
                              [ait_const_32bit,ait_const_16bit,ait_const_8bit,ait_const_symbol,
-
                               ait_real_32bit,ait_real_64bit,ait_real_extended,ait_string])) then
                               ait_real_32bit,ait_real_64bit,ait_real_extended,ait_string])) then
-
                            AsmWriteLn(':');
                            AsmWriteLn(':');
-
                         end;
                         end;
-
                      end;
                      end;
-
         ait_direct : begin
         ait_direct : begin
-
                        AsmWritePChar(pai_direct(hp)^.str);
                        AsmWritePChar(pai_direct(hp)^.str);
-
                        AsmLn;
                        AsmLn;
-
                      end;
                      end;
-
 ait_labeled_instruction : AsmWriteLn(#9#9+int_op2str[pai_labeled(hp)^._operator]+#9+lab2str(pai_labeled(hp)^.lab));
 ait_labeled_instruction : AsmWriteLn(#9#9+int_op2str[pai_labeled(hp)^._operator]+#9+lab2str(pai_labeled(hp)^.lab));
-
         ait_symbol : begin
         ait_symbol : begin
-
                        if pai_symbol(hp)^.is_global then
                        if pai_symbol(hp)^.is_global then
-
                          AsmWriteLn(#9'PUBLIC'#9+StrPas(pai_symbol(hp)^.name));
                          AsmWriteLn(#9'PUBLIC'#9+StrPas(pai_symbol(hp)^.name));
-
                        AsmWritePChar(pai_symbol(hp)^.name);
                        AsmWritePChar(pai_symbol(hp)^.name);
-
                        if assigned(hp^.next) and not(pai(hp^.next)^.typ in
                        if assigned(hp^.next) and not(pai(hp^.next)^.typ in
-
                           [ait_const_32bit,ait_const_16bit,ait_const_8bit,ait_const_symbol,
                           [ait_const_32bit,ait_const_16bit,ait_const_8bit,ait_const_symbol,
-
                            ait_real_64bit,ait_real_extended,ait_string]) then
                            ait_real_64bit,ait_real_extended,ait_string]) then
-
                         AsmWriteLn(':')
                         AsmWriteLn(':')
-
                      end;
                      end;
-
    ait_instruction : begin
    ait_instruction : begin
-
                        suffix:='';
                        suffix:='';
-
                        prefix:= '';
                        prefix:= '';
-
                      { added prefix instructions, must be on same line as opcode }
                      { added prefix instructions, must be on same line as opcode }
-
                        if (pai386(hp)^.op1t = top_none) and
                        if (pai386(hp)^.op1t = top_none) and
-
                           ((pai386(hp)^._operator = A_REP) or
                           ((pai386(hp)^._operator = A_REP) or
-
                            (pai386(hp)^._operator = A_LOCK) or
                            (pai386(hp)^._operator = A_LOCK) or
-
                            (pai386(hp)^._operator =  A_REPE) or
                            (pai386(hp)^._operator =  A_REPE) or
-
                            (pai386(hp)^._operator = A_REPNE)) then
                            (pai386(hp)^._operator = A_REPNE)) then
-
                         Begin
                         Begin
-
                           prefix:=int_op2str[pai386(hp)^._operator]+#9;
                           prefix:=int_op2str[pai386(hp)^._operator]+#9;
-
                           hp:=Pai(hp^.next);
                           hp:=Pai(hp^.next);
-
                         { this is theorically impossible... }
                         { this is theorically impossible... }
-
                           if hp=nil then
                           if hp=nil then
-
                            begin
                            begin
-
                              s:=#9#9+prefix;
                              s:=#9#9+prefix;
-
                              AsmWriteLn(s);
                              AsmWriteLn(s);
-
                              break;
                              break;
-
                            end;
                            end;
-
                         end
                         end
-
                        else
                        else
-
                         prefix:= '';
                         prefix:= '';
-
                        if pai386(hp)^.op1t<>top_none then
                        if pai386(hp)^.op1t<>top_none then
-
                         begin
                         begin
-
                           if pai386(hp)^._operator in [A_CALL] then
                           if pai386(hp)^._operator in [A_CALL] then
-
                            begin
                            begin
-
                            { with tasm call near ptr [edi+12] does not
                            { with tasm call near ptr [edi+12] does not
-
                              work but call near [edi+12] works ?? (PM)
                              work but call near [edi+12] works ?? (PM)
 
 
-
-
                              It works with call dword ptr [], but you
                              It works with call dword ptr [], but you
-
                              need /m2 (2 passes) with tasm (PFV)
                              need /m2 (2 passes) with tasm (PFV)
-
                            }
                            }
-
 {                                    if pai386(hp)^.op1t=top_ref then
 {                                    if pai386(hp)^.op1t=top_ref then
-
                               s:='near '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1)
                               s:='near '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1)
-
                              else
                              else
-
                               s:='near ptr '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1);}
                               s:='near ptr '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1);}
-
                              s:='dword ptr '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1);
                              s:='dword ptr '+getopstr_jmp(pai386(hp)^.op1t,pai386(hp)^.op1);
-
                            end
                            end
-
                           else
                           else
-
                            begin
                            begin
-
                              s:=getopstr(pai386(hp)^.op1t,pai386(hp)^.op1,pai386(hp)^.size,pai386(hp)^._operator,false);
                              s:=getopstr(pai386(hp)^.op1t,pai386(hp)^.op1,pai386(hp)^.size,pai386(hp)^._operator,false);
-
                              if pai386(hp)^.op3t<>top_none then
                              if pai386(hp)^.op3t<>top_none then
-
                               begin
                               begin
-
                                 if pai386(hp)^.op2t<>top_none then
                                 if pai386(hp)^.op2t<>top_none then
-
                                  s:=getopstr(pai386(hp)^.op2t,pointer(longint(twowords(pai386(hp)^.op2).word1)),
                                  s:=getopstr(pai386(hp)^.op2t,pointer(longint(twowords(pai386(hp)^.op2).word1)),
-
                                              pai386(hp)^.size,pai386(hp)^._operator,true)+','+s;
                                              pai386(hp)^.size,pai386(hp)^._operator,true)+','+s;
-
                                 s:=getopstr(pai386(hp)^.op3t,pointer(longint(twowords(pai386(hp)^.op2).word2)),
                                 s:=getopstr(pai386(hp)^.op3t,pointer(longint(twowords(pai386(hp)^.op2).word2)),
-
                                             pai386(hp)^.size,pai386(hp)^._operator,false)+','+s;
                                             pai386(hp)^.size,pai386(hp)^._operator,false)+','+s;
-
                               end
                               end
-
                              else
                              else
-
                               if pai386(hp)^.op2t<>top_none then
                               if pai386(hp)^.op2t<>top_none then
-
                                s:=getopstr(pai386(hp)^.op2t,pai386(hp)^.op2,pai386(hp)^.size,
                                s:=getopstr(pai386(hp)^.op2t,pai386(hp)^.op2,pai386(hp)^.size,
-
                                            pai386(hp)^._operator,true)+','+s;
                                            pai386(hp)^._operator,true)+','+s;
-
                            end;
                            end;
-
                           s:=#9+s;
                           s:=#9+s;
-
                         end
                         end
-
                        else
                        else
-
                         begin
                         begin
-
                           { check if string instruction }
                           { check if string instruction }
-
                           { long form, otherwise may give range check errors }
                           { long form, otherwise may give range check errors }
-
                           { in turbo pascal...                               }
                           { in turbo pascal...                               }
-
                           if ((pai386(hp)^._operator = A_CMPS) or
                           if ((pai386(hp)^._operator = A_CMPS) or
-
                              (pai386(hp)^._operator = A_INS) or
                              (pai386(hp)^._operator = A_INS) or
-
                              (pai386(hp)^._operator = A_OUTS) or
                              (pai386(hp)^._operator = A_OUTS) or
-
                              (pai386(hp)^._operator = A_SCAS) or
                              (pai386(hp)^._operator = A_SCAS) or
-
                              (pai386(hp)^._operator = A_STOS) or
                              (pai386(hp)^._operator = A_STOS) or
-
                              (pai386(hp)^._operator = A_MOVS) or
                              (pai386(hp)^._operator = A_MOVS) or
-
                              (pai386(hp)^._operator = A_LODS) or
                              (pai386(hp)^._operator = A_LODS) or
-
                              (pai386(hp)^._operator = A_XLAT)) then
                              (pai386(hp)^._operator = A_XLAT)) then
-
                            Begin
                            Begin
-
                              case pai386(hp)^.size of
                              case pai386(hp)^.size of
-
                               S_B: suffix:='b';
                               S_B: suffix:='b';
-
                               S_W: suffix:='w';
                               S_W: suffix:='w';
-
                               S_L: suffix:='d';
                               S_L: suffix:='d';
-
                              else
                              else
-
                               Message(assem_f_invalid_suffix_intel);
                               Message(assem_f_invalid_suffix_intel);
-
                              end;
                              end;
-
                            end;
                            end;
-
                           s:='';
                           s:='';
-
                         end;
                         end;
-
                        AsmWriteLn(#9#9+prefix+int_op2str[pai386(hp)^._operator]+suffix+s);
                        AsmWriteLn(#9#9+prefix+int_op2str[pai386(hp)^._operator]+suffix+s);
-
                      end;
                      end;
-
 {$ifdef GDB}
 {$ifdef GDB}
-
              ait_stabn,
              ait_stabn,
-
              ait_stabs,
              ait_stabs,
-
 ait_stab_function_name : ;
 ait_stab_function_name : ;
-
 {$endif GDB}
 {$endif GDB}
-
          else
          else
-
           internalerror(10000);
           internalerror(10000);
-
          end;
          end;
-
          hp:=pai(hp^.next);
          hp:=pai(hp^.next);
-
        end;
        end;
-
     end;
     end;
 
 
 
 
-
-
-
     procedure ti386intasmlist.WriteAsmList;
     procedure ti386intasmlist.WriteAsmList;
 
 
-
-
     begin
     begin
-
 {$ifdef EXTDEBUG}
 {$ifdef EXTDEBUG}
-
       if assigned(current_module^.mainsource) then
       if assigned(current_module^.mainsource) then
-
        comment(v_info,'Start writing intel-styled assembler output for '+current_module^.mainsource^);
        comment(v_info,'Start writing intel-styled assembler output for '+current_module^.mainsource^);
-
 {$endif}
 {$endif}
-
       LastSec:=sec_none;
       LastSec:=sec_none;
-
       AsmWriteLn(#9'.386p');
       AsmWriteLn(#9'.386p');
-
       AsmWriteLn(#9'LOCALS '+target_asm.labelprefix);
       AsmWriteLn(#9'LOCALS '+target_asm.labelprefix);
-
       AsmWriteLn('DGROUP'#9'GROUP'#9'_BSS,_DATA');
       AsmWriteLn('DGROUP'#9'GROUP'#9'_BSS,_DATA');
-
       AsmWriteLn(#9'ASSUME'#9'CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP');
       AsmWriteLn(#9'ASSUME'#9'CS:_CODE,ES:DGROUP,DS:DGROUP,SS:DGROUP');
-
       AsmLn;
       AsmLn;
 
 
-
-
       WriteTree(externals);
       WriteTree(externals);
-
     { INTEL ASM doesn't support stabs
     { INTEL ASM doesn't support stabs
-
       WriteTree(debuglist);}
       WriteTree(debuglist);}
 
 
-
-
       WriteTree(codesegment);
       WriteTree(codesegment);
-
       WriteTree(datasegment);
       WriteTree(datasegment);
-
       WriteTree(consts);
       WriteTree(consts);
-
       WriteTree(rttilist);
       WriteTree(rttilist);
-
       WriteTree(bsssegment);
       WriteTree(bsssegment);
 
 
-
-
       AsmWriteLn(#9'END');
       AsmWriteLn(#9'END');
-
       AsmLn;
       AsmLn;
 
 
-
-
 {$ifdef EXTDEBUG}
 {$ifdef EXTDEBUG}
-
       if assigned(current_module^.mainsource) then
       if assigned(current_module^.mainsource) then
-
        comment(v_info,'Done writing intel-styled assembler output for '+current_module^.mainsource^);
        comment(v_info,'Done writing intel-styled assembler output for '+current_module^.mainsource^);
-
 {$endif EXTDEBUG}
 {$endif EXTDEBUG}
-
    end;
    end;
 
 
-
-
 end.
 end.
-
 {
 {
-
   $Log$
   $Log$
-  Revision 1.14  1998-09-20 17:11:21  jonas
-    * released REGALLOC
+  Revision 1.15  1998-10-01 20:19:06  jonas
+    + ait_marker support
 
 
+  Revision 1.14  1998/09/20 17:11:21  jonas
+    * released REGALLOC
 
 
   Revision 1.13  1998/08/10 15:49:38  peter
   Revision 1.13  1998/08/10 15:49:38  peter
-
     * small fixes for 0.99.5
     * small fixes for 0.99.5
 
 
-
-
   Revision 1.12  1998/08/08 10:19:17  florian
   Revision 1.12  1998/08/08 10:19:17  florian
-
     * small fixes to write the extended type correct
     * small fixes to write the extended type correct
 
 
-
-
   Revision 1.11  1998/06/05 17:46:02  peter
   Revision 1.11  1998/06/05 17:46:02  peter
-
     * tp doesn't like comp() typecast
     * tp doesn't like comp() typecast
 
 
-
-
   Revision 1.10  1998/05/25 17:11:36  pierre
   Revision 1.10  1998/05/25 17:11:36  pierre
-
     * firstpasscount bug fixed
     * firstpasscount bug fixed
-
       now all is already set correctly the first time
       now all is already set correctly the first time
-
       under EXTDEBUG try -gp to skip all other firstpasses
       under EXTDEBUG try -gp to skip all other firstpasses
-
       it works !!
       it works !!
-
     * small bug fixes
     * small bug fixes
-
       - for smallsets with -dTESTSMALLSET
       - for smallsets with -dTESTSMALLSET
-
       - some warnings removed (by correcting code !)
       - some warnings removed (by correcting code !)
 
 
-
-
   Revision 1.9  1998/05/23 01:20:55  peter
   Revision 1.9  1998/05/23 01:20:55  peter
-
     + aktasmmode, aktoptprocessor, aktoutputformat
     + aktasmmode, aktoptprocessor, aktoutputformat
-
     + smartlink per module $SMARTLINK-/+ (like MMX) and moved to aktswitches
     + smartlink per module $SMARTLINK-/+ (like MMX) and moved to aktswitches
-
     + $LIBNAME to set the library name where the unit will be put in
     + $LIBNAME to set the library name where the unit will be put in
-
     * splitted cgi386 a bit (codeseg to large for bp7)
     * splitted cgi386 a bit (codeseg to large for bp7)
-
     * nasm, tasm works again. nasm moved to ag386nsm.pas
     * nasm, tasm works again. nasm moved to ag386nsm.pas
 
 
-
-
   Revision 1.8  1998/05/06 18:36:53  peter
   Revision 1.8  1998/05/06 18:36:53  peter
-
     * tai_section extended with code,data,bss sections and enumerated type
     * tai_section extended with code,data,bss sections and enumerated type
-
     * ident 'compiled by FPC' moved to pmodules
     * ident 'compiled by FPC' moved to pmodules
-
     * small fix for smartlink
     * small fix for smartlink
 
 
-
-
   Revision 1.7  1998/05/06 08:38:32  pierre
   Revision 1.7  1998/05/06 08:38:32  pierre
-
     * better position info with UseTokenInfo
     * better position info with UseTokenInfo
-
       UseTokenInfo greatly simplified
       UseTokenInfo greatly simplified
-
     + added check for changed tree after first time firstpass
     + added check for changed tree after first time firstpass
-
       (if we could remove all the cases were it happen
       (if we could remove all the cases were it happen
-
       we could skip all firstpass if firstpasscount > 1)
       we could skip all firstpass if firstpasscount > 1)
-
       Only with ExtDebug
       Only with ExtDebug
 
 
-
-
   Revision 1.6  1998/05/04 17:54:24  peter
   Revision 1.6  1998/05/04 17:54:24  peter
-
     + smartlinking works (only case jumptable left todo)
     + smartlinking works (only case jumptable left todo)
-
     * redesign of systems.pas to support assemblers and linkers
     * redesign of systems.pas to support assemblers and linkers
-
     + Unitname is now also in the PPU-file, increased version to 14
     + Unitname is now also in the PPU-file, increased version to 14
 
 
-
-
   Revision 1.5  1998/05/01 07:43:52  florian
   Revision 1.5  1998/05/01 07:43:52  florian
-
     + basics for rtti implemented
     + basics for rtti implemented
-
     + switch $m (generate rtti for published sections)
     + switch $m (generate rtti for published sections)
 
 
-
-
   Revision 1.4  1998/04/29 10:33:41  pierre
   Revision 1.4  1998/04/29 10:33:41  pierre
-
     + added some code for ansistring (not complete nor working yet)
     + added some code for ansistring (not complete nor working yet)
-
     * corrected operator overloading
     * corrected operator overloading
-
     * corrected nasm output
     * corrected nasm output
-
     + started inline procedures
     + started inline procedures
-
     + added starstarn : use ** for exponentiation (^ gave problems)
     + added starstarn : use ** for exponentiation (^ gave problems)
-
     + started UseTokenInfo cond to get accurate positions
     + started UseTokenInfo cond to get accurate positions
 
 
-
-
   Revision 1.3  1998/04/08 16:58:01  pierre
   Revision 1.3  1998/04/08 16:58:01  pierre
-
     * several bugfixes
     * several bugfixes
-
       ADD ADC and AND are also sign extended
       ADD ADC and AND are also sign extended
-
       nasm output OK (program still crashes at end
       nasm output OK (program still crashes at end
-
       and creates wrong assembler files !!)
       and creates wrong assembler files !!)
-
       procsym types sym in tdef removed !!
       procsym types sym in tdef removed !!
 
 
-
-
   Revision 1.2  1998/04/08 11:34:17  peter
   Revision 1.2  1998/04/08 11:34:17  peter
-
     * nasm works (linux only tested)
     * nasm works (linux only tested)
-
 }
 }
-

+ 5 - 1
compiler/ag386nsm.pas

@@ -532,6 +532,7 @@ ait_labeled_instruction :
              ait_stabs,
              ait_stabs,
 ait_stab_function_name : ;
 ait_stab_function_name : ;
 {$endif GDB}
 {$endif GDB}
+        ait_marker : ;
          else
          else
           internalerror(10000);
           internalerror(10000);
          end;
          end;
@@ -570,7 +571,10 @@ ait_stab_function_name : ;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.8  1998-09-20 17:11:22  jonas
+  Revision 1.9  1998-10-01 20:19:07  jonas
+    + ait_marker support
+
+  Revision 1.8  1998/09/20 17:11:22  jonas
     * released REGALLOC
     * released REGALLOC
 
 
   Revision 1.7  1998/08/11 14:01:43  peter
   Revision 1.7  1998/08/11 14:01:43  peter

+ 5 - 1
compiler/ag68kgas.pas

@@ -590,6 +590,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
                          AsmWriteLn(ait_section2str(lastsec));
                          AsmWriteLn(ait_section2str(lastsec));
                        AsmStartSize:=AsmSize;
                        AsmStartSize:=AsmSize;
                      end;
                      end;
+        ait_marker : ;
          else
          else
           internalerror(10000);
           internalerror(10000);
          end;
          end;
@@ -663,7 +664,10 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.12  1998-09-28 16:57:09  pierre
+  Revision 1.13  1998-10-01 20:19:08  jonas
+    + ait_marker support
+
+  Revision 1.12  1998/09/28 16:57:09  pierre
     * changed all length(p^.value_str^) into str_length(p)
     * changed all length(p^.value_str^) into str_length(p)
       to get it work with and without ansistrings
       to get it work with and without ansistrings
     * changed sourcefiles field of tmodule to a pointer
     * changed sourcefiles field of tmodule to a pointer

+ 5 - 1
compiler/ag68kmit.pas

@@ -581,6 +581,7 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
                        if lastsec<>sec_none then
                        if lastsec<>sec_none then
                          AsmWriteLn(ait_section2str[lastsec,lastsecidx]);
                          AsmWriteLn(ait_section2str[lastsec,lastsecidx]);
                      end;
                      end;
+        ait_marker : ;
          else
          else
           internalerror(10000);
           internalerror(10000);
          end;
          end;
@@ -641,7 +642,10 @@ ait_stab_function_name : funcname:=pai_stab_function_name(hp)^.str;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.10  1998-09-28 16:57:11  pierre
+  Revision 1.11  1998-10-01 20:19:09  jonas
+    + ait_marker support
+
+  Revision 1.10  1998/09/28 16:57:11  pierre
     * changed all length(p^.value_str^) into str_length(p)
     * changed all length(p^.value_str^) into str_length(p)
       to get it work with and without ansistrings
       to get it work with and without ansistrings
     * changed sourcefiles field of tmodule to a pointer
     * changed sourcefiles field of tmodule to a pointer

+ 5 - 1
compiler/ag68kmot.pas

@@ -485,6 +485,7 @@ ait_labeled_instruction :
               ait_stabs,
               ait_stabs,
  ait_stab_function_name : ;
  ait_stab_function_name : ;
 {$endif GDB}
 {$endif GDB}
+        ait_marker : ;
          else
          else
           internalerror(10000);
           internalerror(10000);
          end;
          end;
@@ -523,7 +524,10 @@ ait_labeled_instruction :
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.8  1998-09-16 01:08:08  carl
+  Revision 1.9  1998-10-01 20:19:10  jonas
+    + ait_marker support
+
+  Revision 1.8  1998/09/16 01:08:08  carl
     * alignment of byte bugfix
     * alignment of byte bugfix
 
 
   Revision 1.7  1998/08/10 14:49:38  peter
   Revision 1.7  1998/08/10 14:49:38  peter