Browse Source

+ added procedure directive parsing for procvars
(accepted are popstack cdecl and pascal)
+ added C vars with the following syntax
var C calias 'true_c_name';(can be followed by external)
reason is that you must add the Cprefix

which is target dependent

pierre 27 years ago
parent
commit
5ad339b3d8
12 changed files with 832 additions and 632 deletions
  1. 34 22
      compiler/cg386cal.pas
  2. 124 105
      compiler/cg386ld.pas
  3. 11 2
      compiler/cg68k.pas
  4. 11 2
      compiler/cgi386.pas
  5. 11 1
      compiler/files.pas
  6. 472 471
      compiler/msgtxt.inc
  7. 19 6
      compiler/pass_1.pas
  8. 44 4
      compiler/pdecl.pas
  9. 13 2
      compiler/pexpr.pas
  10. 11 2
      compiler/pmodules.pas
  11. 12 1
      compiler/ppu.pas
  12. 70 14
      compiler/symsym.inc

+ 34 - 22
compiler/cg386cal.pas

@@ -1085,28 +1085,9 @@ implementation
                    ungetpersistanttemp(p^.procdefinition^.parast^.call_offset,
                    ungetpersistanttemp(p^.procdefinition^.parast^.call_offset,
                      p^.procdefinition^.parast^.datasize);
                      p^.procdefinition^.parast^.datasize);
                 end;
                 end;
-              if (not inlined) and ((p^.procdefinition^.options and poclearstack)<>0) then
-                begin
-                   { consider the alignment with the rest (PM) }
-                   pushedparasize:=pushedparasize+pop_size;
-                   must_pop:=false;
-                   if pushedparasize=4 then
-                     { better than an add on all processors }
-                     exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EDI)))
-                   { the pentium has two pipes and pop reg is pairable }
-                   { but the registers must be different!              }
-                   else if (pushedparasize=8) and
-                     not(cs_littlesize in aktswitches) and
-                     (aktoptprocessor=pentium) and
-                     (procinfo._class=nil) then
-                       begin
-                          exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EDI)));
-                          exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_ESI)));
-                       end
-                   else exprasmlist^.concat(new(pai386,op_const_reg(A_ADD,S_L,pushedparasize,R_ESP)));
-                end;
            end
            end
          else
          else
+           { now procedure variable case }
            begin
            begin
               if (pushedparasize mod 4)<>0 then
               if (pushedparasize mod 4)<>0 then
                 begin
                 begin
@@ -1143,6 +1124,29 @@ implementation
               end;
               end;
 
 
 
 
+             end;
+           { this was only for normal functions
+             displaced here so we also get
+             it to work for procvars PM }
+           if (not inlined) and ((p^.procdefinition^.options and poclearstack)<>0) then
+             begin
+                { consider the alignment with the rest (PM) }
+                pushedparasize:=pushedparasize+pop_size;
+                must_pop:=false;
+                if pushedparasize=4 then
+                  { better than an add on all processors }
+                  exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EDI)))
+                { the pentium has two pipes and pop reg is pairable }
+                { but the registers must be different!              }
+                else if (pushedparasize=8) and
+                  not(cs_littlesize in aktswitches) and
+                  (aktoptprocessor=pentium) and
+                  (procinfo._class=nil) then
+                    begin
+                       exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_EDI)));
+                       exprasmlist^.concat(new(pai386,op_reg(A_POP,S_L,R_ESI)));
+                    end
+                else exprasmlist^.concat(new(pai386,op_const_reg(A_ADD,S_L,pushedparasize,R_ESP)));
              end;
              end;
       dont_call:
       dont_call:
          pushedparasize:=oldpushedparasize;
          pushedparasize:=oldpushedparasize;
@@ -1281,7 +1285,6 @@ implementation
                 emitcall(p^.procdefinition^.mangledname);}
                 emitcall(p^.procdefinition^.mangledname);}
               emitcall('IOCHECK',true);
               emitcall('IOCHECK',true);
            end;
            end;
-         { this should be optimized (PM) }
          if must_pop then
          if must_pop then
            exprasmlist^.concat(new(pai386,op_const_reg(A_ADD,S_L,pop_size,R_ESP)));
            exprasmlist^.concat(new(pai386,op_const_reg(A_ADD,S_L,pop_size,R_ESP)));
          { restore registers }
          { restore registers }
@@ -2190,7 +2193,16 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.2  1998-06-08 13:13:29  pierre
+  Revision 1.3  1998-06-09 16:01:33  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.2  1998/06/08 13:13:29  pierre
     + temporary variables now in temp_gen.pas unit
     + temporary variables now in temp_gen.pas unit
       because it is processor independent
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 124 - 105
compiler/cg386ld.pas

@@ -81,129 +81,139 @@ implementation
               varsym :
               varsym :
                  begin
                  begin
                     hregister:=R_NO;
                     hregister:=R_NO;
-                    symtabletype:=p^.symtable^.symtabletype;
-                    { in case it is a register variable: }
-                    if pvarsym(p^.symtableentry)^.reg<>R_NO then
+                    if (pvarsym(p^.symtableentry)^.var_options and vo_is_C_var)<>0 then
                       begin
                       begin
-                         p^.location.loc:=LOC_CREGISTER;
-                         p^.location.register:=pvarsym(p^.symtableentry)^.reg;
-                         unused:=unused-[pvarsym(p^.symtableentry)^.reg];
+                         stringdispose(p^.location.reference.symbol);
+                         p^.location.reference.symbol:=stringdup(p^.symtableentry^.mangledname);
+                         if (pvarsym(p^.symtableentry)^.var_options and vo_is_external)<>0 then
+                           maybe_concat_external(p^.symtableentry^.owner,p^.symtableentry^.mangledname);
                       end
                       end
                     else
                     else
                       begin
                       begin
-                         { first handle local and temporary variables }
-                         if (symtabletype in [parasymtable,inlinelocalsymtable,
-                                              inlineparasymtable,localsymtable]) then
+                         symtabletype:=p^.symtable^.symtabletype;
+                         { in case it is a register variable: }
+                         if pvarsym(p^.symtableentry)^.reg<>R_NO then
                            begin
                            begin
-                              p^.location.reference.base:=procinfo.framepointer;
-                              p^.location.reference.offset:=pvarsym(p^.symtableentry)^.address;
-                              if (symtabletype=localsymtable) or (symtabletype=inlinelocalsymtable) then
-                                p^.location.reference.offset:=-p^.location.reference.offset;
-                              if (symtabletype=parasymtable) or (symtabletype=inlineparasymtable) then
-                                inc(p^.location.reference.offset,p^.symtable^.call_offset);
-                              if (lexlevel>(p^.symtable^.symtablelevel)) then
+                              p^.location.loc:=LOC_CREGISTER;
+                              p^.location.register:=pvarsym(p^.symtableentry)^.reg;
+                              unused:=unused-[pvarsym(p^.symtableentry)^.reg];
+                           end
+                         else
+                           begin
+                              { first handle local and temporary variables }
+                              if (symtabletype in [parasymtable,inlinelocalsymtable,
+                                                   inlineparasymtable,localsymtable]) then
                                 begin
                                 begin
-                                   hregister:=getregister32;
-
-                                   { make a reference }
-                                   hp:=new_reference(procinfo.framepointer,
-                                     procinfo.framepointer_offset);
-
-
-                                   exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
-
-                                   simple_loadn:=false;
-                                   i:=lexlevel-1;
-                                   while i>(p^.symtable^.symtablelevel) do
+                                   p^.location.reference.base:=procinfo.framepointer;
+                                   p^.location.reference.offset:=pvarsym(p^.symtableentry)^.address;
+                                   if (symtabletype=localsymtable) or (symtabletype=inlinelocalsymtable) then
+                                     p^.location.reference.offset:=-p^.location.reference.offset;
+                                   if (symtabletype=parasymtable) or (symtabletype=inlineparasymtable) then
+                                     inc(p^.location.reference.offset,p^.symtable^.call_offset);
+                                   if (lexlevel>(p^.symtable^.symtablelevel)) then
                                      begin
                                      begin
+                                        hregister:=getregister32;
+     
                                         { make a reference }
                                         { make a reference }
-                                        hp:=new_reference(hregister,8);
+                                        hp:=new_reference(procinfo.framepointer,
+                                          procinfo.framepointer_offset);
+     
+     
                                         exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
                                         exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
-                                        dec(i);
+     
+                                        simple_loadn:=false;
+                                        i:=lexlevel-1;
+                                        while i>(p^.symtable^.symtablelevel) do
+                                          begin
+                                             { make a reference }
+                                             hp:=new_reference(hregister,8);
+                                             exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
+                                             dec(i);
+                                          end;
+                                        p^.location.reference.base:=hregister;
                                      end;
                                      end;
-                                   p^.location.reference.base:=hregister;
-                                end;
-                           end
-                         else
-                           case symtabletype of
-                              unitsymtable,globalsymtable,
-                              staticsymtable : begin
-                                                  stringdispose(p^.location.reference.symbol);
-                                                  p^.location.reference.symbol:=stringdup(p^.symtableentry^.mangledname);
-                                                  if symtabletype=unitsymtable then
-                                                    concat_external(p^.symtableentry^.mangledname,EXT_NEAR);
-                                               end;
-                              objectsymtable : begin
-                                                  if (pvarsym(p^.symtableentry)^.properties and sp_static)<>0 then
-                                                    begin
+                                end
+                              else
+                                case symtabletype of
+                                   unitsymtable,globalsymtable,
+                                   staticsymtable : begin
                                                        stringdispose(p^.location.reference.symbol);
                                                        stringdispose(p^.location.reference.symbol);
                                                        p^.location.reference.symbol:=stringdup(p^.symtableentry^.mangledname);
                                                        p^.location.reference.symbol:=stringdup(p^.symtableentry^.mangledname);
-                                                       if p^.symtable^.defowner^.owner^.symtabletype=unitsymtable then
+                                                       if symtabletype=unitsymtable then
                                                          concat_external(p^.symtableentry^.mangledname,EXT_NEAR);
                                                          concat_external(p^.symtableentry^.mangledname,EXT_NEAR);
-                                                    end
-                                                  else
-                                                    begin
-                                                       p^.location.reference.base:=R_ESI;
-                                                       p^.location.reference.offset:=pvarsym(p^.symtableentry)^.address;
                                                     end;
                                                     end;
-                                               end;
-                              withsymtable:
-                                begin
-                                   hregister:=getregister32;
-                                   p^.location.reference.base:=hregister;
-                                   { make a reference }
-                                   { symtable datasize field
-                                     contains the offset of the temp
-                                     stored }
-                                   hp:=new_reference(procinfo.framepointer,
-                                     p^.symtable^.datasize);
-
-                                   exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
-
-                                   p^.location.reference.offset:=
-                                     pvarsym(p^.symtableentry)^.address;
+                                   objectsymtable : begin
+                                                       if (pvarsym(p^.symtableentry)^.properties and sp_static)<>0 then
+                                                         begin
+                                                            stringdispose(p^.location.reference.symbol);
+                                                            p^.location.reference.symbol:=stringdup(p^.symtableentry^.mangledname);
+                                                            if p^.symtable^.defowner^.owner^.symtabletype=unitsymtable then
+                                                              concat_external(p^.symtableentry^.mangledname,EXT_NEAR);
+                                                         end
+                                                       else
+                                                         begin
+                                                            p^.location.reference.base:=R_ESI;
+                                                            p^.location.reference.offset:=pvarsym(p^.symtableentry)^.address;
+                                                         end;
+                                                    end;
+                                   withsymtable:
+                                     begin
+                                        hregister:=getregister32;
+                                        p^.location.reference.base:=hregister;
+                                        { make a reference }
+                                        { symtable datasize field
+                                          contains the offset of the temp
+                                          stored }
+                                        hp:=new_reference(procinfo.framepointer,
+                                          p^.symtable^.datasize);
+     
+                                        exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,hp,hregister)));
+     
+                                        p^.location.reference.offset:=
+                                          pvarsym(p^.symtableentry)^.address;
+                                     end;
                                 end;
                                 end;
-                           end;
-                         { in case call by reference, then calculate: }
-                         if (pvarsym(p^.symtableentry)^.varspez=vs_var) or
-                            ((pvarsym(p^.symtableentry)^.varspez=vs_const) and
-                             dont_copy_const_param(pvarsym(p^.symtableentry)^.definition)) or
-                             { call by value open arrays are also indirect addressed }
-                             is_open_array(pvarsym(p^.symtableentry)^.definition) then
-                           begin
-                              simple_loadn:=false;
-                              if hregister=R_NO then
-                                hregister:=getregister32;
-                              if (p^.location.reference.base=procinfo.framepointer) then
+                              { in case call by reference, then calculate: }
+                              if (pvarsym(p^.symtableentry)^.varspez=vs_var) or
+                                 ((pvarsym(p^.symtableentry)^.varspez=vs_const) and
+                                  dont_copy_const_param(pvarsym(p^.symtableentry)^.definition)) or
+                                  { call by value open arrays are also indirect addressed }
+                                  is_open_array(pvarsym(p^.symtableentry)^.definition) then
                                 begin
                                 begin
-                                   highframepointer:=p^.location.reference.base;
-                                   highoffset:=p^.location.reference.offset;
-                                end
-                              else
+                                   simple_loadn:=false;
+                                   if hregister=R_NO then
+                                     hregister:=getregister32;
+                                   if (p^.location.reference.base=procinfo.framepointer) then
+                                     begin
+                                        highframepointer:=p^.location.reference.base;
+                                        highoffset:=p^.location.reference.offset;
+                                     end
+                                   else
+                                     begin
+                                        highframepointer:=R_EDI;
+                                        highoffset:=p^.location.reference.offset;
+                                        exprasmlist^.concat(new(pai386,op_reg_reg(A_MOV,S_L,
+                                          p^.location.reference.base,R_EDI)));
+                                     end;
+                                   exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,newreference(p^.location.reference),
+                                     hregister)));
+                                   clear_reference(p^.location.reference);
+                                   p^.location.reference.base:=hregister;
+                               end;
+                              {
+                              if (pvarsym(p^.symtableentry)^.definition^.deftype=objectdef) and
+                                ((pobjectdef(pvarsym(p^.symtableentry)^.definition)^.options and oois_class)<>0) then
                                 begin
                                 begin
-                                   highframepointer:=R_EDI;
-                                   highoffset:=p^.location.reference.offset;
-                                   exprasmlist^.concat(new(pai386,op_reg_reg(A_MOV,S_L,
-                                     p^.location.reference.base,R_EDI)));
+                                   simple_loadn:=false;
+                                   if hregister=R_NO then
+                                     hregister:=getregister32;
+                                   exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,newreference(p^.location.reference),
+                                     hregister)));
+                                   clear_reference(p^.location.reference);
+                                   p^.location.reference.base:=hregister;
                                 end;
                                 end;
-                              exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,newreference(p^.location.reference),
-                                hregister)));
-                              clear_reference(p^.location.reference);
-                              p^.location.reference.base:=hregister;
-                          end;
-                         {
-                         if (pvarsym(p^.symtableentry)^.definition^.deftype=objectdef) and
-                           ((pobjectdef(pvarsym(p^.symtableentry)^.definition)^.options and oois_class)<>0) then
-                           begin
-                              simple_loadn:=false;
-                              if hregister=R_NO then
-                                hregister:=getregister32;
-                              exprasmlist^.concat(new(pai386,op_ref_reg(A_MOV,S_L,newreference(p^.location.reference),
-                                hregister)));
-                              clear_reference(p^.location.reference);
-                              p^.location.reference.base:=hregister;
+                              }
                            end;
                            end;
-                         }
                       end;
                       end;
                  end;
                  end;
               procsym:
               procsym:
@@ -510,7 +520,16 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.2  1998-06-08 13:13:34  pierre
+  Revision 1.3  1998-06-09 16:01:35  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.2  1998/06/08 13:13:34  pierre
     + temporary variables now in temp_gen.pas unit
     + temporary variables now in temp_gen.pas unit
       because it is processor independent
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 2
compiler/cg68k.pas

@@ -4909,7 +4909,7 @@ end;
          i,j,k : longint;
          i,j,k : longint;
 
 
       begin
       begin
-         if (p^.typ=varsym) and (pvarsym(p)^.regable) then
+         if (p^.typ=varsym) and ((pvarsym(p)^.var_options and vo_regable)<>0) then
            begin
            begin
               { walk through all momentary register variables }
               { walk through all momentary register variables }
               for i:=1 to maxvarregs do
               for i:=1 to maxvarregs do
@@ -5137,7 +5137,16 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.6  1998-06-08 13:13:36  pierre
+  Revision 1.7  1998-06-09 16:01:36  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.6  1998/06/08 13:13:36  pierre
     + temporary variables now in temp_gen.pas unit
     + temporary variables now in temp_gen.pas unit
       because it is processor independent
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 2
compiler/cgi386.pas

@@ -280,7 +280,7 @@ implementation
          i,j,k : longint;
          i,j,k : longint;
 
 
       begin
       begin
-         if (p^.typ=varsym) and (pvarsym(p)^.regable) then
+         if (p^.typ=varsym) and ((pvarsym(p)^.var_options and vo_regable)<>0) then
            begin
            begin
               { walk through all momentary register variables }
               { walk through all momentary register variables }
               for i:=1 to maxvarregs do
               for i:=1 to maxvarregs do
@@ -516,7 +516,16 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.37  1998-06-08 13:13:41  pierre
+  Revision 1.38  1998-06-09 16:01:37  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.37  1998/06/08 13:13:41  pierre
     + temporary variables now in temp_gen.pas unit
     + temporary variables now in temp_gen.pas unit
       because it is processor independent
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 1
compiler/files.pas

@@ -204,6 +204,7 @@ unit files;
        ibunitname      = 34;
        ibunitname      = 34;
        ibwidestringdef = 35;
        ibwidestringdef = 35;
        ibstaticlibs    = 36;
        ibstaticlibs    = 36;
+       ibvarsym_C      = 37;
        ibend           = 255;
        ibend           = 255;
 
 
        { unit flags }
        { unit flags }
@@ -937,7 +938,16 @@ unit files;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.16  1998-06-04 10:42:19  pierre
+  Revision 1.17  1998-06-09 16:01:40  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.16  1998/06/04 10:42:19  pierre
     * small bug fix in load_ppu or openppu
     * small bug fix in load_ppu or openppu
 
 
   Revision 1.15  1998/05/28 14:37:53  peter
   Revision 1.15  1998/05/28 14:37:53  peter

+ 472 - 471
compiler/msgtxt.inc

@@ -1,4 +1,4 @@
-const msgtxt : array[1..14129] of char=(
+const msgtxt : array[1..14132] of char=(
   'I','_','C','o','m','p','i','l','e','r',':',' ','$','1',#000,
   'I','_','C','o','m','p','i','l','e','r',':',' ','$','1',#000,
   'I','_','U','n','i','t','s',' ','a','r','e',' ','s','e','a',
   'I','_','U','n','i','t','s',' ','a','r','e',' ','s','e','a',
   'r','c','h','e','d',' ','i','n',':',' ','$','1',#000,'D','_',
   'r','c','h','e','d',' ','i','n',':',' ','$','1',#000,'D','_',
@@ -391,7 +391,7 @@ const msgtxt : array[1..14129] of char=(
   ' ','b','e',' ','r','e','s','o','l','v','e','d',' ','h','e',
   ' ','b','e',' ','r','e','s','o','l','v','e','d',' ','h','e',
   'r','e',' ','t','o',' ','u','s','e',' ','t','h','e',' ','c',
   'r','e',' ','t','o',' ','u','s','e',' ','t','h','e',' ','c',
   'l','a','s','s',' ','a','s',' ','a','n','c','h','e','s','t',
   'l','a','s','s',' ','a','s',' ','a','n','c','h','e','s','t',
-  'o','r',#000,'N','_','L','o','c','a','l',' ','v','a','r','i',
+  'o','r',#000,'W','_','L','o','c','a','l',' ','v','a','r','i',
   'a','b','l','e',' ','$','1',' ','d','o','e','s','n',#039,'t',
   'a','b','l','e',' ','$','1',' ','d','o','e','s','n',#039,'t',
   ' ','s','e','e','m',' ','t','o',' ','b','e',' ','i','n','i',
   ' ','s','e','e','m',' ','t','o',' ','b','e',' ','i','n','i',
   't','i','a','l','i','z','e','d',' ','y','e','t',' ','!',#000,
   't','i','a','l','i','z','e','d',' ','y','e','t',' ','!',#000,
@@ -461,483 +461,484 @@ const msgtxt : array[1..14129] of char=(
   ' ','n','o','t',' ','s','e','e','m',' ','t','o',' ','b','e',
   ' ','n','o','t',' ','s','e','e','m',' ','t','o',' ','b','e',
   ' ','s','e','t',#000,'E','_','U','n','k','n','o','w','n',' ',
   ' ','s','e','t',#000,'E','_','U','n','k','n','o','w','n',' ',
   'f','i','e','l','d',' ','i','d','e','n','t','i','f','i','e',
   'f','i','e','l','d',' ','i','d','e','n','t','i','f','i','e',
-  'r',#000,'N','_','L','o','c','a','l',' ','v','a','r','i','a',
+  'r',#000,'W','_','L','o','c','a','l',' ','v','a','r','i','a',
   'b','l','e',' ','$','1',' ','d','o','e','s',' ','n','o','t',
   'b','l','e',' ','$','1',' ','d','o','e','s',' ','n','o','t',
   ' ','s','e','e','m',' ','t','o',' ','b','e',' ','i','n','i',
   ' ','s','e','e','m',' ','t','o',' ','b','e',' ','i','n','i',
   't','i','a','l','i','z','e','d',#000,'E','_','i','d','e','n',
   't','i','a','l','i','z','e','d',#000,'E','_','i','d','e','n',
   't','i','f','i','e','r',' ','i','d','e','n','t','s',' ','n',
   't','i','f','i','e','r',' ','i','d','e','n','t','s',' ','n',
-  'o',' ','m','e','m','b','e','r',#000,'E','_','B','R','E','A',
-  'K',' ','n','o','t',' ','a','l','l','o','w','e','d',#000,'E',
-  '_','C','O','N','T','I','N','U','E',' ','n','o','t',' ','a',
-  'l','l','o','w','e','d',#000,'E','_','E','x','p','r','e','s',
-  's','i','o','n',' ','t','o','o',' ','c','o','m','p','l','i',
-  'c','a','t','e','d',' ','-',' ','F','P','U',' ','s','t','a',
-  'c','k',' ','o','v','e','r','f','l','o','w',#000,'E','_','I',
-  'l','l','e','g','a','l',' ','e','x','p','r','e','s','s','i',
-  'o','n',#000,'E','_','I','n','v','a','l','i','d',' ','i','n',
-  't','e','g','e','r',#000,'E','_','I','l','l','e','g','a','l',
-  ' ','q','u','a','l','i','f','i','e','r',#000,'E','_','H','i',
-  'g','h',' ','r','a','n','g','e',' ','l','i','m','i','t',' ',
-  '<',' ','l','o','w',' ','r','a','n','g','e',' ','l','i','m',
-  'i','t',#000,'E','_','I','l','l','e','g','a','l',' ','c','o',
-  'u','n','t','e','r',' ','v','a','r','i','a','b','l','e',#000,
-  'E','_','C','a','n',#039,'t',' ','d','e','t','e','r','m','i',
-  'n','e',' ','w','h','i','c','h',' ','o','v','e','r','l','o',
-  'a','d','e','d',' ','f','u','n','c','t','i','o','n',' ','t',
-  'o',' ','c','a','l','l',#000,'E','_','P','a','r','a','m','e',
-  't','e','r',' ','l','i','s','t',' ','s','i','z','e',' ','e',
-  'x','c','e','e','d','s',' ','6','5','5','3','5',' ','b','y',
-  't','e','s',#000,'E','_','I','l','l','e','g','a','l',' ','t',
-  'y','p','e',' ','c','o','n','v','e','r','s','i','o','n',#000,
-  'E','_','F','i','l','e',' ','t','y','p','e','s',' ','m','u',
-  's','t',' ','b','e',' ','v','a','r',' ','p','a','r','a','m',
-  'e','t','e','r','s',#000,'E','_','T','h','e',' ','u','s','e',
-  ' ','o','f',' ','a',' ','f','a','r',' ','p','o','i','n','t',
-  'e','r',' ','i','s','n',#039,'t',' ','a','l','l','o','w','e',
-  'd',' ','t','h','e','r','e',#000,'E','_','i','l','l','e','g',
-  'a','l',' ','c','a','l','l',' ','b','y',' ','r','e','f','e',
-  'r','e','n','c','e',' ','p','a','r','a','m','e','t','e','r',
-  's',#000,'E','_','E','X','P','O','R','T',' ','d','e','c','l',
-  'a','r','e','d',' ','f','u','n','c','t','i','o','n','s',' ',
-  'c','a','n',#039,'t',' ','b','e',' ','c','a','l','l','e','d',
-  #000,'W','_','P','o','s','s','i','b','l','e',' ','i','l','l',
-  'e','g','a','l',' ','c','a','l','l',' ','o','f',' ','c','o',
-  'n','s','t','r','u','c','t','o','r',' ','o','r',' ','d','e',
-  's','t','r','u','c','t','o','r',' ','(','d','o','e','s','n',
-  #039,'t',' ','m','a','t','c','h',' ','t','o',' ','t','h','i',
-  's',' ','c','o','n','t','e','x','t',')',#000,'N','_','I','n',
-  'e','f','f','i','c','i','e','n','t',' ','c','o','d','e',#000,
-  'W','_','u','n','r','e','a','c','h','a','b','l','e',' ','c',
-  'o','d','e',#000,'E','_','p','r','o','c','e','d','u','r','e',
-  ' ','c','a','l','l',' ','w','i','t','h',' ','s','t','a','c',
-  'k','f','r','a','m','e',' ','E','S','P','/','S','P',#000,'E',
-  '_','A','b','s','t','r','a','c','t',' ','m','e','t','h','o',
-  'd','s',' ','c','a','n',#039,'t',' ','b','e',' ','c','a','l',
-  'l','e','d',' ','d','i','r','e','c','t','l','y',#000,'F','_',
-  'I','n','t','e','r','n','a','l',' ','E','r','r','o','r',' ',
-  'i','n',' ','g','e','t','f','l','o','a','t','r','e','g','(',
-  ')',',',' ','a','l','l','o','c','a','t','i','o','n',' ','f',
-  'a','i','l','u','r','e',#000,'F','_','U','n','k','n','o','w',
-  'n',' ','f','l','o','a','t',' ','t','y','p','e',#000,'F','_',
-  'S','e','c','o','n','d','V','e','c','n','(',')',' ','b','a',
-  's','e',' ','d','e','f','i','n','e','d',' ','t','w','i','c',
-  'e',#000,'F','_','E','x','t','e','n','d','e','d',' ','c','g',
-  '6','8','k',' ','n','o','t',' ','s','u','p','p','o','r','t',
-  'e','d',#000,'F','_','3','2','-','b','i','t',' ','u','n','s',
-  'i','g','n','e','d',' ','n','o','t',' ','s','u','p','p','o',
-  'r','t','e','d',' ','i','n',' ','M','C','6','8','0','0','0',
-  ' ','m','o','d','e',#000,'F','_','I','n','t','e','r','n','a',
-  'l',' ','E','r','r','o','r',' ','i','n',' ','s','e','c','o',
-  'n','d','i','n','l','i','n','e','(',')',#000,'D','_','R','e',
-  'g','i','s','t','e','r',' ','$','1',' ','w','e','i','g','h',
-  't',' ','$','2',' ','$','3',#000,'E','_','S','t','a','c','k',
-  ' ','l','i','m','i','t',' ','e','x','c','e','d','e','e','d',
-  ' ','i','n',' ','l','o','c','a','l',' ','r','o','u','t','i',
-  'n','e',#000,'D','_','S','t','a','c','k',' ','f','r','a','m',
-  'e',' ','i','s',' ','o','m','i','t','e','d',#000,'F','_','D',
-  'i','v','i','d','e',' ','b','y',' ','z','e','r','o',' ','i',
-  'n',' ','a','s','m',' ','e','v','a','l','u','a','t','o','r',
+  'o',' ','m','e','m','b','e','r',' ','$','1',#000,'E','_','B',
+  'R','E','A','K',' ','n','o','t',' ','a','l','l','o','w','e',
+  'd',#000,'E','_','C','O','N','T','I','N','U','E',' ','n','o',
+  't',' ','a','l','l','o','w','e','d',#000,'E','_','E','x','p',
+  'r','e','s','s','i','o','n',' ','t','o','o',' ','c','o','m',
+  'p','l','i','c','a','t','e','d',' ','-',' ','F','P','U',' ',
+  's','t','a','c','k',' ','o','v','e','r','f','l','o','w',#000,
+  'E','_','I','l','l','e','g','a','l',' ','e','x','p','r','e',
+  's','s','i','o','n',#000,'E','_','I','n','v','a','l','i','d',
+  ' ','i','n','t','e','g','e','r',#000,'E','_','I','l','l','e',
+  'g','a','l',' ','q','u','a','l','i','f','i','e','r',#000,'E',
+  '_','H','i','g','h',' ','r','a','n','g','e',' ','l','i','m',
+  'i','t',' ','<',' ','l','o','w',' ','r','a','n','g','e',' ',
+  'l','i','m','i','t',#000,'E','_','I','l','l','e','g','a','l',
+  ' ','c','o','u','n','t','e','r',' ','v','a','r','i','a','b',
+  'l','e',#000,'E','_','C','a','n',#039,'t',' ','d','e','t','e',
+  'r','m','i','n','e',' ','w','h','i','c','h',' ','o','v','e',
+  'r','l','o','a','d','e','d',' ','f','u','n','c','t','i','o',
+  'n',' ','t','o',' ','c','a','l','l',#000,'E','_','P','a','r',
+  'a','m','e','t','e','r',' ','l','i','s','t',' ','s','i','z',
+  'e',' ','e','x','c','e','e','d','s',' ','6','5','5','3','5',
+  ' ','b','y','t','e','s',#000,'E','_','I','l','l','e','g','a',
+  'l',' ','t','y','p','e',' ','c','o','n','v','e','r','s','i',
+  'o','n',#000,'E','_','F','i','l','e',' ','t','y','p','e','s',
+  ' ','m','u','s','t',' ','b','e',' ','v','a','r',' ','p','a',
+  'r','a','m','e','t','e','r','s',#000,'E','_','T','h','e',' ',
+  'u','s','e',' ','o','f',' ','a',' ','f','a','r',' ','p','o',
+  'i','n','t','e','r',' ','i','s','n',#039,'t',' ','a','l','l',
+  'o','w','e','d',' ','t','h','e','r','e',#000,'E','_','i','l',
+  'l','e','g','a','l',' ','c','a','l','l',' ','b','y',' ','r',
+  'e','f','e','r','e','n','c','e',' ','p','a','r','a','m','e',
+  't','e','r','s',#000,'E','_','E','X','P','O','R','T',' ','d',
+  'e','c','l','a','r','e','d',' ','f','u','n','c','t','i','o',
+  'n','s',' ','c','a','n',#039,'t',' ','b','e',' ','c','a','l',
+  'l','e','d',#000,'W','_','P','o','s','s','i','b','l','e',' ',
+  'i','l','l','e','g','a','l',' ','c','a','l','l',' ','o','f',
+  ' ','c','o','n','s','t','r','u','c','t','o','r',' ','o','r',
+  ' ','d','e','s','t','r','u','c','t','o','r',' ','(','d','o',
+  'e','s','n',#039,'t',' ','m','a','t','c','h',' ','t','o',' ',
+  't','h','i','s',' ','c','o','n','t','e','x','t',')',#000,'N',
+  '_','I','n','e','f','f','i','c','i','e','n','t',' ','c','o',
+  'd','e',#000,'W','_','u','n','r','e','a','c','h','a','b','l',
+  'e',' ','c','o','d','e',#000,'E','_','p','r','o','c','e','d',
+  'u','r','e',' ','c','a','l','l',' ','w','i','t','h',' ','s',
+  't','a','c','k','f','r','a','m','e',' ','E','S','P','/','S',
+  'P',#000,'E','_','A','b','s','t','r','a','c','t',' ','m','e',
+  't','h','o','d','s',' ','c','a','n',#039,'t',' ','b','e',' ',
+  'c','a','l','l','e','d',' ','d','i','r','e','c','t','l','y',
+  #000,'F','_','I','n','t','e','r','n','a','l',' ','E','r','r',
+  'o','r',' ','i','n',' ','g','e','t','f','l','o','a','t','r',
+  'e','g','(',')',',',' ','a','l','l','o','c','a','t','i','o',
+  'n',' ','f','a','i','l','u','r','e',#000,'F','_','U','n','k',
+  'n','o','w','n',' ','f','l','o','a','t',' ','t','y','p','e',
+  #000,'F','_','S','e','c','o','n','d','V','e','c','n','(',')',
+  ' ','b','a','s','e',' ','d','e','f','i','n','e','d',' ','t',
+  'w','i','c','e',#000,'F','_','E','x','t','e','n','d','e','d',
+  ' ','c','g','6','8','k',' ','n','o','t',' ','s','u','p','p',
+  'o','r','t','e','d',#000,'F','_','3','2','-','b','i','t',' ',
+  'u','n','s','i','g','n','e','d',' ','n','o','t',' ','s','u',
+  'p','p','o','r','t','e','d',' ','i','n',' ','M','C','6','8',
+  '0','0','0',' ','m','o','d','e',#000,'F','_','I','n','t','e',
+  'r','n','a','l',' ','E','r','r','o','r',' ','i','n',' ','s',
+  'e','c','o','n','d','i','n','l','i','n','e','(',')',#000,'D',
+  '_','R','e','g','i','s','t','e','r',' ','$','1',' ','w','e',
+  'i','g','h','t',' ','$','2',' ','$','3',#000,'E','_','S','t',
+  'a','c','k',' ','l','i','m','i','t',' ','e','x','c','e','d',
+  'e','e','d',' ','i','n',' ','l','o','c','a','l',' ','r','o',
+  'u','t','i','n','e',#000,'D','_','S','t','a','c','k',' ','f',
+  'r','a','m','e',' ','i','s',' ','o','m','i','t','e','d',#000,
+  'F','_','D','i','v','i','d','e',' ','b','y',' ','z','e','r',
+  'o',' ','i','n',' ','a','s','m',' ','e','v','a','l','u','a',
+  't','o','r',#000,'F','_','E','v','a','l','u','a','t','o','r',
+  ' ','s','t','a','c','k',' ','o','v','e','r','f','l','o','w',
   #000,'F','_','E','v','a','l','u','a','t','o','r',' ','s','t',
   #000,'F','_','E','v','a','l','u','a','t','o','r',' ','s','t',
-  'a','c','k',' ','o','v','e','r','f','l','o','w',#000,'F','_',
-  'E','v','a','l','u','a','t','o','r',' ','s','t','a','c','k',
-  ' ','u','n','d','e','r','f','l','o','w',#000,'F','_','I','n',
-  'v','a','l','i','d',' ','n','u','m','e','r','i','c',' ','f',
-  'o','r','m','a','t',' ','i','n',' ','a','s','m',' ','e','v',
-  'a','l','u','a','t','o','r',#000,'F','_','I','n','v','a','l',
-  'i','d',' ','O','p','e','r','a','t','o','r',' ','i','n',' ',
-  'a','s','m',' ','e','v','a','l','u','a','t','o','r',#000,'F',
-  '_','U','n','k','n','o','w','n',' ','e','r','r','o','r',' ',
+  'a','c','k',' ','u','n','d','e','r','f','l','o','w',#000,'F',
+  '_','I','n','v','a','l','i','d',' ','n','u','m','e','r','i',
+  'c',' ','f','o','r','m','a','t',' ','i','n',' ','a','s','m',
+  ' ','e','v','a','l','u','a','t','o','r',#000,'F','_','I','n',
+  'v','a','l','i','d',' ','O','p','e','r','a','t','o','r',' ',
   'i','n',' ','a','s','m',' ','e','v','a','l','u','a','t','o',
   'i','n',' ','a','s','m',' ','e','v','a','l','u','a','t','o',
-  'r',#000,'W','_','I','n','v','a','l','i','d',' ','n','u','m',
-  'e','r','i','c',' ','v','a','l','u','e',#000,'E','_','e','s',
-  'c','a','p','e',' ','s','e','q','u','e','n','c','e',' ','i',
-  'g','n','o','r','e','d',':',' ','$','1',#000,'E','_','A','s',
-  'm',' ','s','y','n','t','a','x',' ','e','r','r','o','r',' ',
-  '-',' ','P','r','e','f','i','x',' ','n','o','t',' ','f','o',
-  'u','n','d',#000,'E','_','A','s','m',' ','s','y','n','t','a',
-  'x',' ','e','r','r','o','r',' ','-',' ','T','r','y','i','n',
-  'g',' ','t','o',' ','a','d','d',' ','m','o','r','e',' ','t',
-  'h','a','n',' ','o','n','e',' ','p','r','e','f','i','x',#000,
-  'E','_','A','s','m',' ','s','y','n','t','a','x',' ','e','r',
-  'r','o','r',' ','-',' ','O','p','c','o','d','e',' ','n','o',
-  't',' ','f','o','u','n','d',#000,'E','_','I','n','v','a','l',
-  'i','d',' ','s','y','m','b','o','l',' ','r','e','f','e','r',
-  'e','n','c','e',#000,'W','_','C','a','l','l','i','n','g',' ',
-  'a','n',' ','o','v','e','r','l','o','a','d',' ','f','u','n',
-  'c','t','i','o','n',' ','i','n',' ','a','n',' ','a','s','m',
-  #000,'E','_','C','o','n','s','t','a','n','t',' ','v','a','l',
-  'u','e',' ','o','u','t',' ','o','f',' ','b','o','u','n','d',
-  's',#000,'E','_','N','o','n','-','l','a','b','e','l',' ','p',
-  'a','t','t','e','r','n',' ','c','o','n','t','a','i','n','s',
-  ' ','@',#000,'E','_','I','n','v','a','l','i','d',' ','O','p',
-  'e','r','a','n','d',':',' ','$','1',#000,'W','_','O','v','e',
-  'r','r','i','d','e',' ','o','p','e','r','a','t','o','r',' ',
-  'n','o','t',' ','s','u','p','p','o','r','t','e','d',#000,'E',
-  '_','E','r','r','o','r',' ','i','n',' ','b','i','n','a','r',
-  'y',' ','c','o','n','s','t','a','n','t',':',' ','$','1',#000,
-  'E','_','E','r','r','o','r',' ','i','n',' ','o','c','t','a',
-  'l',' ','c','o','n','s','t','a','n','t',':',' ','$','1',#000,
-  'E','_','E','r','r','o','r',' ','i','n',' ','h','e','x','a',
-  'd','e','c','i','m','a','l',' ','c','o','n','s','t','a','n',
-  't',':',' ','$','1',#000,'E','_','E','r','r','o','r',' ','i',
-  'n',' ','i','n','t','e','g','e','r',' ','c','o','n','s','t',
-  'a','n','t',':',' ','$','1',#000,'E','_','I','n','v','a','l',
-  'i','d',' ','l','a','b','e','l','e','d',' ','o','p','c','o',
-  'd','e',#000,'F','_','I','n','t','e','r','n','a','l',' ','e',
-  'r','r','o','r',' ','i','n',' ','F','i','n','d','t','y','p',
-  'e','(',')',#000,'E','_','I','n','v','a','l','i','d',' ','s',
-  'i','z','e',' ','f','o','r',' ','M','O','V','S','X','/','M',
-  'O','V','Z','X',#000,'E','_','1','6','-','b','i','t',' ','b',
-  'a','s','e',' ','i','n',' ','3','2','-','b','i','t',' ','s',
-  'e','g','m','e','n','t',#000,'E','_','1','6','-','b','i','t',
-  ' ','i','n','d','e','x',' ','i','n',' ','3','2','-','b','i',
-  't',' ','s','e','g','m','e','n','t',#000,'E','_','I','n','v',
-  'a','l','i','d',' ','O','p','c','o','d','e',#000,'E','_','C',
-  'o','n','s','t','a','n','t',' ','r','e','f','e','r','e','n',
-  'c','e',' ','n','o','t',' ','a','l','l','o','w','e','d',#000,
-  'W','_','F','w','a','i','t',' ','c','a','n',' ','c','a','u',
-  's','e',' ','e','m','u','l','a','t','i','o','n',' ','p','r',
-  'o','b','l','e','m','s',' ','w','i','t','h',' ','e','m','u',
-  '3','8','7',#000,'E','_','I','n','v','a','l','i','d',' ','c',
-  'o','m','b','i','n','a','t','i','o','n',' ','o','f',' ','o',
-  'p','c','o','d','e',' ','a','n','d',' ','o','p','e','r','a',
-  'n','d','s',#000,'W','_','O','p','c','o','d','e',' ','$','1',
-  ' ','n','o','t',' ','i','n',' ','t','a','b','l','e',',',' ',
-  'o','p','e','r','a','n','d','s',' ','n','o','t',' ','c','h',
-  'e','c','k','e','d',#000,'F','_','I','n','t','e','r','n','a',
-  'l',' ','E','r','r','o','r',' ','i','n',' ','C','o','n','c',
-  'a','t','O','p','c','o','d','e','(',')',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','s','i','z','e',' ','i','n',' ','r',
-  'e','f','e','r','e','n','c','e',#000,'E','_','I','n','v','a',
-  'l','i','d',' ','m','i','d','d','l','e',' ','s','i','z','e',
-  'd',' ','o','p','e','r','a','n','d',#000,'E','_','I','n','v',
-  'a','l','i','d',' ','t','h','r','e','e',' ','o','p','e','r',
-  'a','n','d',' ','o','p','c','o','d','e',#000,'E','_','A','s',
-  's','e','m','b','l','e','r',' ','s','y','n','t','a','x',' ',
-  'e','r','r','o','r',#000,'E','_','I','n','v','a','l','i','d',
-  ' ','o','p','e','r','a','n','d',' ','t','y','p','e',#000,'E',
-  '_','S','e','g','m','e','n','t',' ','o','v','e','r','r','i',
-  'd','e','s',' ','n','o','t',' ','s','u','p','p','o','r','t',
-  'e','d',#000,'E','_','I','n','v','a','l','i','d',' ','c','o',
-  'n','s','t','a','n','t',' ','s','y','m','b','o','l',' ','$',
-  '1',#000,'F','_','I','n','t','e','r','n','a','l',' ','E','r',
-  'r','r','o','r',' ','c','o','n','v','e','r','t','i','n','g',
-  ' ','b','i','n','a','r','y',#000,'F','_','I','n','t','e','r',
-  'n','a','l',' ','E','r','r','r','o','r',' ','c','o','n','v',
-  'e','r','t','i','n','g',' ','h','e','x','a','d','e','c','i',
-  'm','a','l',#000,'F','_','I','n','t','e','r','n','a','l',' ',
-  'E','r','r','r','o','r',' ','c','o','n','v','e','r','t','i',
-  'n','g',' ','o','c','t','a','l',#000,'E','_','I','n','v','a',
-  'l','i','d',' ','c','o','n','s','t','a','n','t',' ','e','x',
-  'p','r','e','s','s','i','o','n',#000,'E','_','U','n','k','n',
-  'o','w','n',' ','i','d','e','n','t','i','f','i','e','r',':',
-  ' ','$','1',#000,'E','_','T','r','y','i','n','g',' ','t','o',
-  ' ','d','e','f','i','n','e',' ','a','n',' ','i','n','d','e',
-  'x',' ','r','e','g','i','s','t','e','r',' ','m','o','r','e',
-  ' ','t','h','a','n',' ','o','n','c','e',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','f','i','e','l','d',' ','s','p','e',
-  'c','i','f','i','e','r',#000,'F','_','I','n','t','e','r','n',
-  'a','l',' ','E','r','r','o','r',' ','i','n',' ','B','u','i',
-  'l','d','S','c','a','l','i','n','g','(',')',#000,'E','_','I',
-  'n','v','a','l','i','d',' ','s','c','a','l','i','n','g',' ',
-  'f','a','c','t','o','r',#000,'E','_','I','n','v','a','l','i',
-  'd',' ','s','c','a','l','i','n','g',' ','v','a','l','u','e',
-  #000,'E','_','S','c','a','l','i','n','g',' ','v','a','l','u',
-  'e',' ','o','n','l','y',' ','a','l','l','o','w','e','d',' ',
-  'w','i','t','h',' ','i','n','d','e','x',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','a','s','s','e','m','b','l','e','r',
-  ' ','s','y','n','t','a','x','.',' ','N','o',' ','r','e','f',
-  ' ','w','i','t','h',' ','b','r','a','c','k','e','t','s',')',
-  #000,'E','_','E','x','p','r','e','s','s','i','o','n','s',' ',
-  'o','f',' ','t','h','e',' ','f','o','r','m',' ','[','s','r',
-  'e','g',':','r','e','g','.','.','.',']',' ','a','r','e',' ',
-  'c','u','r','r','e','n','t','l','y',' ','n','o','t',' ','s',
-  'u','p','p','o','r','t','e','d',#000,'E','_','T','r','y','i',
-  'n','g',' ','t','o',' ','d','e','f','i','n','e',' ','a',' ',
-  's','e','g','m','e','n','t',' ','r','e','g','i','s','t','e',
-  'r',' ','t','w','i','c','e',#000,'E','_','T','r','y','i','n',
-  'g',' ','t','o',' ','d','e','f','i','n','e',' ','a',' ','b',
-  'a','s','e',' ','r','e','g','i','s','t','e','r',' ','t','w',
-  'i','c','e',#000,'E','_','T','r','y','i','n','g',' ','t','o',
-  ' ','u','s','e',' ','a',' ','n','e','g','a','t','i','v','e',
-  ' ','i','n','d','e','x',' ','r','e','g','i','s','t','e','r',
-  #000,'E','_','A','s','m',' ','s','y','n','t','a','x',' ','e',
-  'r','r','o','r',' ','-',' ','e','r','r','o','r',' ','i','n',
-  ' ','r','e','f','e','r','e','n','c','e',#000,'E','_','L','o',
-  'c','a','l',' ','s','y','m','b','o','l','s',' ','n','o','t',
-  ' ','a','l','l','o','w','e','d',' ','a','s',' ','r','e','f',
-  'e','r','e','n','c','e','s',#000,'E','_','I','n','v','a','l',
-  'i','d',' ','o','p','e','r','a','n','d',' ','i','n',' ','b',
-  'r','a','c','k','e','t',' ','e','x','p','r','e','s','s','i',
-  'o','n',#000,'E','_','I','n','v','a','l','i','d',' ','s','y',
-  'm','b','o','l',' ','n','a','m','e',':',' ','$','1',#000,'E',
-  '_','I','n','v','a','l','i','d',' ','R','e','f','e','r','e',
-  'n','c','e',' ','s','y','n','t','a','x',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','s','t','r','i','n','g',' ','a','s',
-  ' ','o','p','c','o','d','e',' ','o','p','e','r','a','n','d',
-  ':',' ','$','1',#000,'W','_','@','C','O','D','E',' ','a','n',
-  'd',' ','@','D','A','T','A',' ','n','o','t',' ','s','u','p',
-  'p','o','r','t','e','d',#000,'E','_','N','u','l','l',' ','l',
-  'a','b','e','l',' ','r','e','f','e','r','e','n','c','e','s',
-  ' ','a','r','e',' ','n','o','t',' ','a','l','l','o','w','e',
-  'd',#000,'E','_','C','a','n','n','o','t',' ','u','s','e',' ',
-  'S','E','L','F',' ','o','u','t','s','i','d','e',' ','a',' ',
-  'm','e','t','h','o','d',#000,'E','_','A','s','m',' ','s','y',
-  'n','t','a','x',' ','e','r','r','o','r',' ','-',' ','S','h',
-  'o','u','l','d',' ','s','t','a','r','t',' ','w','i','t','h',
-  ' ','b','r','a','c','k','e','t',#000,'E','_','A','s','m',' ',
-  's','y','n','t','a','x',' ','e','r','r','o','r',' ','-',' ',
-  'r','e','g','i','s','t','e','r',':',' ','$','1',#000,'E','_',
-  'S','E','G',' ','a','n','d',' ','O','F','F','S','E','T',' ',
-  'n','o','t',' ','s','u','p','p','o','r','t','e','d',#000,'E',
+  'r',#000,'F','_','U','n','k','n','o','w','n',' ','e','r','r',
+  'o','r',' ','i','n',' ','a','s','m',' ','e','v','a','l','u',
+  'a','t','o','r',#000,'W','_','I','n','v','a','l','i','d',' ',
+  'n','u','m','e','r','i','c',' ','v','a','l','u','e',#000,'E',
+  '_','e','s','c','a','p','e',' ','s','e','q','u','e','n','c',
+  'e',' ','i','g','n','o','r','e','d',':',' ','$','1',#000,'E',
   '_','A','s','m',' ','s','y','n','t','a','x',' ','e','r','r',
   '_','A','s','m',' ','s','y','n','t','a','x',' ','e','r','r',
-  'o','r',' ','-',' ','i','n',' ','o','p','c','o','d','e',' ',
-  'o','p','e','r','a','n','d',#000,'E','_','I','n','v','a','l',
-  'i','d',' ','S','t','r','i','n','g',' ','e','x','p','r','e',
-  's','s','i','o','n',#000,'E','_','C','o','n','s','t','a','n',
-  't',' ','e','x','p','r','e','s','s','i','o','n',' ','o','u',
-  't',' ','o','f',' ','b','o','u','n','d','s',#000,'F','_','I',
-  'n','t','e','r','n','a','l',' ','E','r','r','o','r',' ','i',
-  'n',' ','B','u','i','l','d','C','o','n','s','t','a','n','t',
-  '(',')',#000,'W','_','A',' ','r','e','p','e','a','t',' ','p',
-  'r','e','f','i','x',' ','a','n','d',' ','a',' ','s','e','g',
-  'm','e','n','t',' ','o','v','e','r','r','i','d','e',' ','o',
-  'n',' ','<','=',' ','i','3','8','6',' ','m','a','y',' ','r',
-  'e','s','u','l','t',' ','i','n',' ','e','r','r','o','r','s',
-  ' ','i','f',' ','a','n',' ','i','n','t','e','r','r','u','p',
-  't',' ','o','c','c','u','r','s',#000,'E','_','I','n','v','a',
-  'l','i','d',' ','o','r',' ','m','i','s','s','i','n','g',' ',
-  'o','p','c','o','d','e',#000,'E','_','I','n','v','a','l','i',
+  'o','r',' ','-',' ','P','r','e','f','i','x',' ','n','o','t',
+  ' ','f','o','u','n','d',#000,'E','_','A','s','m',' ','s','y',
+  'n','t','a','x',' ','e','r','r','o','r',' ','-',' ','T','r',
+  'y','i','n','g',' ','t','o',' ','a','d','d',' ','m','o','r',
+  'e',' ','t','h','a','n',' ','o','n','e',' ','p','r','e','f',
+  'i','x',#000,'E','_','A','s','m',' ','s','y','n','t','a','x',
+  ' ','e','r','r','o','r',' ','-',' ','O','p','c','o','d','e',
+  ' ','n','o','t',' ','f','o','u','n','d',#000,'E','_','I','n',
+  'v','a','l','i','d',' ','s','y','m','b','o','l',' ','r','e',
+  'f','e','r','e','n','c','e',#000,'W','_','C','a','l','l','i',
+  'n','g',' ','a','n',' ','o','v','e','r','l','o','a','d',' ',
+  'f','u','n','c','t','i','o','n',' ','i','n',' ','a','n',' ',
+  'a','s','m',#000,'E','_','C','o','n','s','t','a','n','t',' ',
+  'v','a','l','u','e',' ','o','u','t',' ','o','f',' ','b','o',
+  'u','n','d','s',#000,'E','_','N','o','n','-','l','a','b','e',
+  'l',' ','p','a','t','t','e','r','n',' ','c','o','n','t','a',
+  'i','n','s',' ','@',#000,'E','_','I','n','v','a','l','i','d',
+  ' ','O','p','e','r','a','n','d',':',' ','$','1',#000,'W','_',
+  'O','v','e','r','r','i','d','e',' ','o','p','e','r','a','t',
+  'o','r',' ','n','o','t',' ','s','u','p','p','o','r','t','e',
+  'd',#000,'E','_','E','r','r','o','r',' ','i','n',' ','b','i',
+  'n','a','r','y',' ','c','o','n','s','t','a','n','t',':',' ',
+  '$','1',#000,'E','_','E','r','r','o','r',' ','i','n',' ','o',
+  'c','t','a','l',' ','c','o','n','s','t','a','n','t',':',' ',
+  '$','1',#000,'E','_','E','r','r','o','r',' ','i','n',' ','h',
+  'e','x','a','d','e','c','i','m','a','l',' ','c','o','n','s',
+  't','a','n','t',':',' ','$','1',#000,'E','_','E','r','r','o',
+  'r',' ','i','n',' ','i','n','t','e','g','e','r',' ','c','o',
+  'n','s','t','a','n','t',':',' ','$','1',#000,'E','_','I','n',
+  'v','a','l','i','d',' ','l','a','b','e','l','e','d',' ','o',
+  'p','c','o','d','e',#000,'F','_','I','n','t','e','r','n','a',
+  'l',' ','e','r','r','o','r',' ','i','n',' ','F','i','n','d',
+  't','y','p','e','(',')',#000,'E','_','I','n','v','a','l','i',
+  'd',' ','s','i','z','e',' ','f','o','r',' ','M','O','V','S',
+  'X','/','M','O','V','Z','X',#000,'E','_','1','6','-','b','i',
+  't',' ','b','a','s','e',' ','i','n',' ','3','2','-','b','i',
+  't',' ','s','e','g','m','e','n','t',#000,'E','_','1','6','-',
+  'b','i','t',' ','i','n','d','e','x',' ','i','n',' ','3','2',
+  '-','b','i','t',' ','s','e','g','m','e','n','t',#000,'E','_',
+  'I','n','v','a','l','i','d',' ','O','p','c','o','d','e',#000,
+  'E','_','C','o','n','s','t','a','n','t',' ','r','e','f','e',
+  'r','e','n','c','e',' ','n','o','t',' ','a','l','l','o','w',
+  'e','d',#000,'W','_','F','w','a','i','t',' ','c','a','n',' ',
+  'c','a','u','s','e',' ','e','m','u','l','a','t','i','o','n',
+  ' ','p','r','o','b','l','e','m','s',' ','w','i','t','h',' ',
+  'e','m','u','3','8','7',#000,'E','_','I','n','v','a','l','i',
   'd',' ','c','o','m','b','i','n','a','t','i','o','n',' ','o',
   'd',' ','c','o','m','b','i','n','a','t','i','o','n',' ','o',
-  'f',' ','p','r','e','f','i','x',' ','a','n','d',' ','o','p',
-  'c','o','d','e',':',' ','$','1',#000,'E','_','I','n','v','a',
-  'l','i','d',' ','c','o','m','b','i','n','a','t','i','o','n',
-  ' ','o','f',' ','o','v','e','r','r','i','d','e',' ','a','n',
-  'd',' ','o','p','c','o','d','e',':',' ','$','1',#000,'E','_',
-  'T','o','o',' ','m','a','n','y',' ','o','p','e','r','a','n',
-  'd','s',' ','o','n',' ','l','i','n','e',#000,'E','_','D','u',
-  'p','l','i','c','a','t','e',' ','l','o','c','a','l',' ','s',
-  'y','m','b','o','l',':',' ','$','1',#000,'E','_','U','n','k',
-  'n','o','w','n',' ','l','a','b','e','l',' ','i','d','e','n',
-  't','i','f','e','r',':',' ','$','1',#000,'E','_','A','s','s',
-  'e','m','b','l','e',' ','n','o','d','e',' ','s','y','n','t',
-  'a','x',' ','e','r','r','o','r',#000,'E','_','U','n','d','e',
-  'f','i','n','e','d',' ','l','o','c','a','l',' ','s','y','m',
-  'b','o','l',':',' ','$','1',#000,'D','_','S','t','a','r','t',
-  'i','n','g',' ','i','n','t','e','l',' ','s','t','y','l','e',
-  'd',' ','a','s','s','e','m','b','l','e','r',' ','p','a','r',
-  's','i','n','g','.','.','.',#000,'D','_','F','i','n','i','s',
-  'h','e','d',' ','i','n','t','e','l',' ','s','t','y','l','e',
-  'd',' ','a','s','s','e','m','b','l','e','r',' ','p','a','r',
-  's','i','n','g','.','.','.',#000,'E','_','N','o','t',' ','a',
-  ' ','d','i','r','e','c','t','i','v','e',' ','o','r',' ','l',
-  'o','c','a','l',' ','s','y','m','b','o','l',':',' ','$','1',
-  #000,'E','_','/',' ','a','t',' ','b','e','g','i','n','n','i',
-  'n','g',' ','o','f',' ','l','i','n','e',' ','n','o','t',' ',
-  'a','l','l','o','w','e','d',#000,'E','_','N','O','R',' ','n',
-  'o','t',' ','s','u','p','p','o','r','t','e','d',#000,'E','_',
-  'I','n','v','a','l','i','d',' ','f','l','o','a','t','i','n',
-  'g',' ','p','o','i','n','t',' ','r','e','g','i','s','t','e',
-  'r',' ','n','a','m','e',#000,'W','_','M','o','d','u','l','o',
-  ' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',#000,
-  'E','_','I','n','v','a','l','i','d',' ','f','l','o','a','t',
-  'i','n','g',' ','p','o','i','n','t',' ','c','o','n','s','t',
-  'a','n','t',':',' ','$','1',#000,'E','_','S','i','z','e',' ',
-  's','u','f','f','i','x',' ','a','n','d',' ','d','e','s','t',
-  'i','n','a','t','i','o','n',' ','r','e','g','i','s','t','e',
-  'r',' ','d','o',' ','n','o','t',' ','m','a','t','c','h',#000,
-  'E','_','I','n','t','e','r','n','a','l',' ','e','r','r','o',
-  'r',' ','i','n',' ','C','o','n','c','a','t','L','a','b','e',
-  'l','e','d','I','n','s','t','r','(',')',#000,'W','_','F','l',
-  'o','a','t','i','n','g',' ','p','o','i','n','t',' ','b','i',
-  'n','a','r','y',' ','r','e','p','r','e','s','e','n','t','a',
-  't','i','o','n',' ','i','g','n','o','r','e','d',#000,'W','_',
-  'F','l','o','a','t','i','n','g',' ','p','o','i','n','t',' ',
-  'h','e','x','a','d','e','c','i','m','a','l',' ','r','e','p',
-  'r','e','s','e','n','t','a','t','i','o','n',' ','i','g','n',
-  'o','r','e','d',#000,'W','_','F','l','o','a','t','i','n','g',
-  ' ','p','o','i','n','t',' ','o','c','t','a','l',' ','r','e',
-  'p','r','e','s','e','n','t','a','t','i','o','n',' ','i','g',
-  'n','o','r','e','d',#000,'E','_','I','n','v','a','l','i','d',
-  ' ','r','e','a','l',' ','c','o','n','s','t','a','n','t',' ',
-  'e','x','p','r','e','s','s','i','o','n',#000,'E','_','P','a',
-  'r','e','n','t','h','e','s','i','s',' ','a','r','e',' ','n',
-  'o','t',' ','a','l','l','o','w','e','d',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','R','e','f','e','r','e','n','c','e',
-  #000,'E','_','C','a','n','n','o','t',' ','u','s','e',' ','_',
-  '_','S','E','L','F',' ','o','u','t','s','i','d','e',' ','a',
-  ' ','m','e','t','h','o','d',#000,'E','_','C','a','n','n','o',
-  't',' ','u','s','e',' ','_','_','O','L','D','E','B','P',' ',
-  'o','u','t','s','i','d','e',' ','a',' ','n','e','s','t','e',
-  'd',' ','p','r','o','c','e','d','u','r','e',#000,'W','_','I',
-  'd','e','n','t','i','f','i','e','r',' ','$','1',' ','s','u',
-  'p','p','o','s','e','d',' ','e','x','t','e','r','n','a','l',
-  #000,'E','_','I','n','v','a','l','i','d',' ','s','e','g','m',
-  'e','n','t',' ','o','v','e','r','r','i','d','e',' ','e','x',
-  'p','r','e','s','s','i','o','n',#000,'E','_','S','t','r','i',
-  'n','g','s',' ','n','o','t',' ','a','l','l','o','w','e','d',
-  ' ','a','s',' ','c','o','n','s','t','a','n','t','s',#000,'D',
-  '_','S','t','a','r','t','i','n','g',' ','A','T','&','T',' ',
-  's','t','y','l','e','d',' ','a','s','s','e','m','b','l','e',
-  'r',' ','p','a','r','s','i','n','g','.','.','.',#000,'D','_',
-  'F','i','n','i','s','h','e','d',' ','A','T','&','T',' ','s',
-  't','y','l','e','d',' ','a','s','s','e','m','b','l','e','r',
-  ' ','p','a','r','s','i','n','g','.','.','.',#000,'E','_','S',
-  'w','i','t','c','h','i','n','g',' ','s','e','c','t','i','o',
-  'n','s',' ','i','s',' ','n','o','t',' ','a','l','l','o','w',
-  'e','d',' ','i','n',' ','a','n',' ','a','s','s','e','m','b',
-  'l','e','r',' ','b','l','o','c','k',#000,'E','_','I','n','v',
-  'a','l','i','d',' ','g','l','o','b','a','l',' ','d','e','f',
-  'i','n','i','t','i','o','n',#000,'E','_','L','i','n','e',' ',
-  's','e','p','a','r','a','t','o','r',' ','e','x','p','e','c',
-  't','e','d',#000,'W','_','g','l','o','b','l',' ','n','o','t',
-  ' ','s','u','p','p','o','r','t','e','d',#000,'W','_','a','l',
-  'i','g','n',' ','n','o','t',' ','s','u','p','p','o','r','t',
-  'e','d',#000,'W','_','l','c','o','m','m',' ','n','o','t',' ',
-  's','u','p','p','o','r','t','e','d',#000,'W','_','c','o','m',
-  'm',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',
-  #000,'E','_','I','n','v','a','l','i','d',' ','l','o','c','a',
-  'l',' ','c','o','m','m','o','n',' ','d','e','f','i','n','i',
-  't','i','o','n',#000,'E','_','I','n','v','a','l','i','d',' ',
-  'g','l','o','b','a','l',' ','c','o','m','m','o','n',' ','d',
-  'e','f','i','n','i','t','i','o','n',#000,'E','_','l','o','c',
-  'a','l',' ','s','y','m','b','o','l',':',' ','$','1',' ','n',
-  'o','t',' ','f','o','u','n','d',' ','i','n','s','i','d','e',
-  ' ','a','s','m',' ','s','t','a','t','e','m','e','n','t',#000,
-  'E','_','a','s','s','e','m','b','l','e','r',' ','c','o','d',
-  'e',' ','n','o','t',' ','r','e','t','u','r','n','e','d',' ',
-  't','o',' ','t','e','x','t',#000,'F','_','i','n','t','e','r',
-  'n','a','l',' ','e','r','r','o','r',' ','i','n',' ','B','u',
-  'i','l','d','R','e','f','e','r','e','n','c','e','(',')',#000,
-  'E','_','i','n','v','a','l','i','d',' ','o','p','c','o','d',
-  'e',' ','s','i','z','e',#000,'W','_','N','E','A','R',' ','i',
-  'g','n','o','r','e','d',#000,'W','_','F','A','R',' ','i','g',
-  'n','o','r','e','d',#000,'D','_','C','r','e','a','t','i','n',
-  'g',' ','i','n','l','i','n','e',' ','a','s','m',' ','l','o',
-  'o','k','u','p',' ','t','a','b','l','e','s',#000,'W','_','U',
-  's','i','n','g',' ','a',' ','d','e','f','i','n','e','d',' ',
-  'n','a','m','e',' ','a','s',' ','a',' ','l','o','c','a','l',
-  ' ','l','a','b','e','l',#000,'F','_','i','n','t','e','r','n',
-  'a','l',' ','e','r','r','o','r',' ','i','n',' ','H','a','n',
-  'd','l','e','E','x','t','e','n','d','(',')',#000,'E','_','I',
-  'n','v','a','l','i','d',' ','c','h','a','r','a','c','t','e',
-  'r',':',' ','<',#000,'E','_','I','n','v','a','l','i','d',' ',
-  'c','h','a','r','a','c','t','e','r',':',' ','>',#000,'E','_',
-  'U','n','s','u','p','p','o','r','t','e','d',' ','o','p','c',
-  'o','d','e',#000,'E','_','I','n','c','r','e','m','e','n','t',
-  ' ','a','n','d',' ','D','e','c','r','e','m','e','n','t',' ',
-  'm','o','d','e',' ','n','o','t',' ','a','l','l','o','w','e',
-  'd',' ','t','o','g','e','t','h','e','r',#000,'E','_','I','n',
-  'v','a','l','i','d',' ','R','e','g','i','s','t','e','r',' ',
-  'l','i','s','t',' ','i','n',' ','m','o','v','e','m','/','f',
-  'm','o','v','e','m',#000,'E','_','I','n','v','a','l','i','d',
-  ' ','R','e','g','i','s','t','e','r',' ','l','i','s','t',' ',
-  'f','o','r',' ','o','p','c','o','d','e',#000,'E','_','6','8',
-  '0','2','0','+',' ','m','o','d','e',' ','r','e','q','u','i',
-  'r','e','d',' ','t','o',' ','a','s','s','e','m','b','l','e',
-  #000,'D','_','S','t','a','r','t','i','n','g',' ','M','o','t',
-  'o','r','o','l','a',' ','s','t','y','l','e','d',' ','a','s',
-  's','e','m','b','l','e','r',' ','p','a','r','s','i','n','g',
-  '.','.','.',#000,'D','_','F','i','n','i','s','h','e','d',' ',
+  'f',' ','o','p','c','o','d','e',' ','a','n','d',' ','o','p',
+  'e','r','a','n','d','s',#000,'W','_','O','p','c','o','d','e',
+  ' ','$','1',' ','n','o','t',' ','i','n',' ','t','a','b','l',
+  'e',',',' ','o','p','e','r','a','n','d','s',' ','n','o','t',
+  ' ','c','h','e','c','k','e','d',#000,'F','_','I','n','t','e',
+  'r','n','a','l',' ','E','r','r','o','r',' ','i','n',' ','C',
+  'o','n','c','a','t','O','p','c','o','d','e','(',')',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','s','i','z','e',' ','i',
+  'n',' ','r','e','f','e','r','e','n','c','e',#000,'E','_','I',
+  'n','v','a','l','i','d',' ','m','i','d','d','l','e',' ','s',
+  'i','z','e','d',' ','o','p','e','r','a','n','d',#000,'E','_',
+  'I','n','v','a','l','i','d',' ','t','h','r','e','e',' ','o',
+  'p','e','r','a','n','d',' ','o','p','c','o','d','e',#000,'E',
+  '_','A','s','s','e','m','b','l','e','r',' ','s','y','n','t',
+  'a','x',' ','e','r','r','o','r',#000,'E','_','I','n','v','a',
+  'l','i','d',' ','o','p','e','r','a','n','d',' ','t','y','p',
+  'e',#000,'E','_','S','e','g','m','e','n','t',' ','o','v','e',
+  'r','r','i','d','e','s',' ','n','o','t',' ','s','u','p','p',
+  'o','r','t','e','d',#000,'E','_','I','n','v','a','l','i','d',
+  ' ','c','o','n','s','t','a','n','t',' ','s','y','m','b','o',
+  'l',' ','$','1',#000,'F','_','I','n','t','e','r','n','a','l',
+  ' ','E','r','r','r','o','r',' ','c','o','n','v','e','r','t',
+  'i','n','g',' ','b','i','n','a','r','y',#000,'F','_','I','n',
+  't','e','r','n','a','l',' ','E','r','r','r','o','r',' ','c',
+  'o','n','v','e','r','t','i','n','g',' ','h','e','x','a','d',
+  'e','c','i','m','a','l',#000,'F','_','I','n','t','e','r','n',
+  'a','l',' ','E','r','r','r','o','r',' ','c','o','n','v','e',
+  'r','t','i','n','g',' ','o','c','t','a','l',#000,'E','_','I',
+  'n','v','a','l','i','d',' ','c','o','n','s','t','a','n','t',
+  ' ','e','x','p','r','e','s','s','i','o','n',#000,'E','_','U',
+  'n','k','n','o','w','n',' ','i','d','e','n','t','i','f','i',
+  'e','r',':',' ','$','1',#000,'E','_','T','r','y','i','n','g',
+  ' ','t','o',' ','d','e','f','i','n','e',' ','a','n',' ','i',
+  'n','d','e','x',' ','r','e','g','i','s','t','e','r',' ','m',
+  'o','r','e',' ','t','h','a','n',' ','o','n','c','e',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','f','i','e','l','d',' ',
+  's','p','e','c','i','f','i','e','r',#000,'F','_','I','n','t',
+  'e','r','n','a','l',' ','E','r','r','o','r',' ','i','n',' ',
+  'B','u','i','l','d','S','c','a','l','i','n','g','(',')',#000,
+  'E','_','I','n','v','a','l','i','d',' ','s','c','a','l','i',
+  'n','g',' ','f','a','c','t','o','r',#000,'E','_','I','n','v',
+  'a','l','i','d',' ','s','c','a','l','i','n','g',' ','v','a',
+  'l','u','e',#000,'E','_','S','c','a','l','i','n','g',' ','v',
+  'a','l','u','e',' ','o','n','l','y',' ','a','l','l','o','w',
+  'e','d',' ','w','i','t','h',' ','i','n','d','e','x',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','a','s','s','e','m','b',
+  'l','e','r',' ','s','y','n','t','a','x','.',' ','N','o',' ',
+  'r','e','f',' ','w','i','t','h',' ','b','r','a','c','k','e',
+  't','s',')',#000,'E','_','E','x','p','r','e','s','s','i','o',
+  'n','s',' ','o','f',' ','t','h','e',' ','f','o','r','m',' ',
+  '[','s','r','e','g',':','r','e','g','.','.','.',']',' ','a',
+  'r','e',' ','c','u','r','r','e','n','t','l','y',' ','n','o',
+  't',' ','s','u','p','p','o','r','t','e','d',#000,'E','_','T',
+  'r','y','i','n','g',' ','t','o',' ','d','e','f','i','n','e',
+  ' ','a',' ','s','e','g','m','e','n','t',' ','r','e','g','i',
+  's','t','e','r',' ','t','w','i','c','e',#000,'E','_','T','r',
+  'y','i','n','g',' ','t','o',' ','d','e','f','i','n','e',' ',
+  'a',' ','b','a','s','e',' ','r','e','g','i','s','t','e','r',
+  ' ','t','w','i','c','e',#000,'E','_','T','r','y','i','n','g',
+  ' ','t','o',' ','u','s','e',' ','a',' ','n','e','g','a','t',
+  'i','v','e',' ','i','n','d','e','x',' ','r','e','g','i','s',
+  't','e','r',#000,'E','_','A','s','m',' ','s','y','n','t','a',
+  'x',' ','e','r','r','o','r',' ','-',' ','e','r','r','o','r',
+  ' ','i','n',' ','r','e','f','e','r','e','n','c','e',#000,'E',
+  '_','L','o','c','a','l',' ','s','y','m','b','o','l','s',' ',
+  'n','o','t',' ','a','l','l','o','w','e','d',' ','a','s',' ',
+  'r','e','f','e','r','e','n','c','e','s',#000,'E','_','I','n',
+  'v','a','l','i','d',' ','o','p','e','r','a','n','d',' ','i',
+  'n',' ','b','r','a','c','k','e','t',' ','e','x','p','r','e',
+  's','s','i','o','n',#000,'E','_','I','n','v','a','l','i','d',
+  ' ','s','y','m','b','o','l',' ','n','a','m','e',':',' ','$',
+  '1',#000,'E','_','I','n','v','a','l','i','d',' ','R','e','f',
+  'e','r','e','n','c','e',' ','s','y','n','t','a','x',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','s','t','r','i','n','g',
+  ' ','a','s',' ','o','p','c','o','d','e',' ','o','p','e','r',
+  'a','n','d',':',' ','$','1',#000,'W','_','@','C','O','D','E',
+  ' ','a','n','d',' ','@','D','A','T','A',' ','n','o','t',' ',
+  's','u','p','p','o','r','t','e','d',#000,'E','_','N','u','l',
+  'l',' ','l','a','b','e','l',' ','r','e','f','e','r','e','n',
+  'c','e','s',' ','a','r','e',' ','n','o','t',' ','a','l','l',
+  'o','w','e','d',#000,'E','_','C','a','n','n','o','t',' ','u',
+  's','e',' ','S','E','L','F',' ','o','u','t','s','i','d','e',
+  ' ','a',' ','m','e','t','h','o','d',#000,'E','_','A','s','m',
+  ' ','s','y','n','t','a','x',' ','e','r','r','o','r',' ','-',
+  ' ','S','h','o','u','l','d',' ','s','t','a','r','t',' ','w',
+  'i','t','h',' ','b','r','a','c','k','e','t',#000,'E','_','A',
+  's','m',' ','s','y','n','t','a','x',' ','e','r','r','o','r',
+  ' ','-',' ','r','e','g','i','s','t','e','r',':',' ','$','1',
+  #000,'E','_','S','E','G',' ','a','n','d',' ','O','F','F','S',
+  'E','T',' ','n','o','t',' ','s','u','p','p','o','r','t','e',
+  'd',#000,'E','_','A','s','m',' ','s','y','n','t','a','x',' ',
+  'e','r','r','o','r',' ','-',' ','i','n',' ','o','p','c','o',
+  'd','e',' ','o','p','e','r','a','n','d',#000,'E','_','I','n',
+  'v','a','l','i','d',' ','S','t','r','i','n','g',' ','e','x',
+  'p','r','e','s','s','i','o','n',#000,'E','_','C','o','n','s',
+  't','a','n','t',' ','e','x','p','r','e','s','s','i','o','n',
+  ' ','o','u','t',' ','o','f',' ','b','o','u','n','d','s',#000,
+  'F','_','I','n','t','e','r','n','a','l',' ','E','r','r','o',
+  'r',' ','i','n',' ','B','u','i','l','d','C','o','n','s','t',
+  'a','n','t','(',')',#000,'W','_','A',' ','r','e','p','e','a',
+  't',' ','p','r','e','f','i','x',' ','a','n','d',' ','a',' ',
+  's','e','g','m','e','n','t',' ','o','v','e','r','r','i','d',
+  'e',' ','o','n',' ','<','=',' ','i','3','8','6',' ','m','a',
+  'y',' ','r','e','s','u','l','t',' ','i','n',' ','e','r','r',
+  'o','r','s',' ','i','f',' ','a','n',' ','i','n','t','e','r',
+  'r','u','p','t',' ','o','c','c','u','r','s',#000,'E','_','I',
+  'n','v','a','l','i','d',' ','o','r',' ','m','i','s','s','i',
+  'n','g',' ','o','p','c','o','d','e',#000,'E','_','I','n','v',
+  'a','l','i','d',' ','c','o','m','b','i','n','a','t','i','o',
+  'n',' ','o','f',' ','p','r','e','f','i','x',' ','a','n','d',
+  ' ','o','p','c','o','d','e',':',' ','$','1',#000,'E','_','I',
+  'n','v','a','l','i','d',' ','c','o','m','b','i','n','a','t',
+  'i','o','n',' ','o','f',' ','o','v','e','r','r','i','d','e',
+  ' ','a','n','d',' ','o','p','c','o','d','e',':',' ','$','1',
+  #000,'E','_','T','o','o',' ','m','a','n','y',' ','o','p','e',
+  'r','a','n','d','s',' ','o','n',' ','l','i','n','e',#000,'E',
+  '_','D','u','p','l','i','c','a','t','e',' ','l','o','c','a',
+  'l',' ','s','y','m','b','o','l',':',' ','$','1',#000,'E','_',
+  'U','n','k','n','o','w','n',' ','l','a','b','e','l',' ','i',
+  'd','e','n','t','i','f','e','r',':',' ','$','1',#000,'E','_',
+  'A','s','s','e','m','b','l','e',' ','n','o','d','e',' ','s',
+  'y','n','t','a','x',' ','e','r','r','o','r',#000,'E','_','U',
+  'n','d','e','f','i','n','e','d',' ','l','o','c','a','l',' ',
+  's','y','m','b','o','l',':',' ','$','1',#000,'D','_','S','t',
+  'a','r','t','i','n','g',' ','i','n','t','e','l',' ','s','t',
+  'y','l','e','d',' ','a','s','s','e','m','b','l','e','r',' ',
+  'p','a','r','s','i','n','g','.','.','.',#000,'D','_','F','i',
+  'n','i','s','h','e','d',' ','i','n','t','e','l',' ','s','t',
+  'y','l','e','d',' ','a','s','s','e','m','b','l','e','r',' ',
+  'p','a','r','s','i','n','g','.','.','.',#000,'E','_','N','o',
+  't',' ','a',' ','d','i','r','e','c','t','i','v','e',' ','o',
+  'r',' ','l','o','c','a','l',' ','s','y','m','b','o','l',':',
+  ' ','$','1',#000,'E','_','/',' ','a','t',' ','b','e','g','i',
+  'n','n','i','n','g',' ','o','f',' ','l','i','n','e',' ','n',
+  'o','t',' ','a','l','l','o','w','e','d',#000,'E','_','N','O',
+  'R',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',
+  #000,'E','_','I','n','v','a','l','i','d',' ','f','l','o','a',
+  't','i','n','g',' ','p','o','i','n','t',' ','r','e','g','i',
+  's','t','e','r',' ','n','a','m','e',#000,'W','_','M','o','d',
+  'u','l','o',' ','n','o','t',' ','s','u','p','p','o','r','t',
+  'e','d',#000,'E','_','I','n','v','a','l','i','d',' ','f','l',
+  'o','a','t','i','n','g',' ','p','o','i','n','t',' ','c','o',
+  'n','s','t','a','n','t',':',' ','$','1',#000,'E','_','S','i',
+  'z','e',' ','s','u','f','f','i','x',' ','a','n','d',' ','d',
+  'e','s','t','i','n','a','t','i','o','n',' ','r','e','g','i',
+  's','t','e','r',' ','d','o',' ','n','o','t',' ','m','a','t',
+  'c','h',#000,'E','_','I','n','t','e','r','n','a','l',' ','e',
+  'r','r','o','r',' ','i','n',' ','C','o','n','c','a','t','L',
+  'a','b','e','l','e','d','I','n','s','t','r','(',')',#000,'W',
+  '_','F','l','o','a','t','i','n','g',' ','p','o','i','n','t',
+  ' ','b','i','n','a','r','y',' ','r','e','p','r','e','s','e',
+  'n','t','a','t','i','o','n',' ','i','g','n','o','r','e','d',
+  #000,'W','_','F','l','o','a','t','i','n','g',' ','p','o','i',
+  'n','t',' ','h','e','x','a','d','e','c','i','m','a','l',' ',
+  'r','e','p','r','e','s','e','n','t','a','t','i','o','n',' ',
+  'i','g','n','o','r','e','d',#000,'W','_','F','l','o','a','t',
+  'i','n','g',' ','p','o','i','n','t',' ','o','c','t','a','l',
+  ' ','r','e','p','r','e','s','e','n','t','a','t','i','o','n',
+  ' ','i','g','n','o','r','e','d',#000,'E','_','I','n','v','a',
+  'l','i','d',' ','r','e','a','l',' ','c','o','n','s','t','a',
+  'n','t',' ','e','x','p','r','e','s','s','i','o','n',#000,'E',
+  '_','P','a','r','e','n','t','h','e','s','i','s',' ','a','r',
+  'e',' ','n','o','t',' ','a','l','l','o','w','e','d',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','R','e','f','e','r','e',
+  'n','c','e',#000,'E','_','C','a','n','n','o','t',' ','u','s',
+  'e',' ','_','_','S','E','L','F',' ','o','u','t','s','i','d',
+  'e',' ','a',' ','m','e','t','h','o','d',#000,'E','_','C','a',
+  'n','n','o','t',' ','u','s','e',' ','_','_','O','L','D','E',
+  'B','P',' ','o','u','t','s','i','d','e',' ','a',' ','n','e',
+  's','t','e','d',' ','p','r','o','c','e','d','u','r','e',#000,
+  'W','_','I','d','e','n','t','i','f','i','e','r',' ','$','1',
+  ' ','s','u','p','p','o','s','e','d',' ','e','x','t','e','r',
+  'n','a','l',#000,'E','_','I','n','v','a','l','i','d',' ','s',
+  'e','g','m','e','n','t',' ','o','v','e','r','r','i','d','e',
+  ' ','e','x','p','r','e','s','s','i','o','n',#000,'E','_','S',
+  't','r','i','n','g','s',' ','n','o','t',' ','a','l','l','o',
+  'w','e','d',' ','a','s',' ','c','o','n','s','t','a','n','t',
+  's',#000,'D','_','S','t','a','r','t','i','n','g',' ','A','T',
+  '&','T',' ','s','t','y','l','e','d',' ','a','s','s','e','m',
+  'b','l','e','r',' ','p','a','r','s','i','n','g','.','.','.',
+  #000,'D','_','F','i','n','i','s','h','e','d',' ','A','T','&',
+  'T',' ','s','t','y','l','e','d',' ','a','s','s','e','m','b',
+  'l','e','r',' ','p','a','r','s','i','n','g','.','.','.',#000,
+  'E','_','S','w','i','t','c','h','i','n','g',' ','s','e','c',
+  't','i','o','n','s',' ','i','s',' ','n','o','t',' ','a','l',
+  'l','o','w','e','d',' ','i','n',' ','a','n',' ','a','s','s',
+  'e','m','b','l','e','r',' ','b','l','o','c','k',#000,'E','_',
+  'I','n','v','a','l','i','d',' ','g','l','o','b','a','l',' ',
+  'd','e','f','i','n','i','t','i','o','n',#000,'E','_','L','i',
+  'n','e',' ','s','e','p','a','r','a','t','o','r',' ','e','x',
+  'p','e','c','t','e','d',#000,'W','_','g','l','o','b','l',' ',
+  'n','o','t',' ','s','u','p','p','o','r','t','e','d',#000,'W',
+  '_','a','l','i','g','n',' ','n','o','t',' ','s','u','p','p',
+  'o','r','t','e','d',#000,'W','_','l','c','o','m','m',' ','n',
+  'o','t',' ','s','u','p','p','o','r','t','e','d',#000,'W','_',
+  'c','o','m','m',' ','n','o','t',' ','s','u','p','p','o','r',
+  't','e','d',#000,'E','_','I','n','v','a','l','i','d',' ','l',
+  'o','c','a','l',' ','c','o','m','m','o','n',' ','d','e','f',
+  'i','n','i','t','i','o','n',#000,'E','_','I','n','v','a','l',
+  'i','d',' ','g','l','o','b','a','l',' ','c','o','m','m','o',
+  'n',' ','d','e','f','i','n','i','t','i','o','n',#000,'E','_',
+  'l','o','c','a','l',' ','s','y','m','b','o','l',':',' ','$',
+  '1',' ','n','o','t',' ','f','o','u','n','d',' ','i','n','s',
+  'i','d','e',' ','a','s','m',' ','s','t','a','t','e','m','e',
+  'n','t',#000,'E','_','a','s','s','e','m','b','l','e','r',' ',
+  'c','o','d','e',' ','n','o','t',' ','r','e','t','u','r','n',
+  'e','d',' ','t','o',' ','t','e','x','t',#000,'F','_','i','n',
+  't','e','r','n','a','l',' ','e','r','r','o','r',' ','i','n',
+  ' ','B','u','i','l','d','R','e','f','e','r','e','n','c','e',
+  '(',')',#000,'E','_','i','n','v','a','l','i','d',' ','o','p',
+  'c','o','d','e',' ','s','i','z','e',#000,'W','_','N','E','A',
+  'R',' ','i','g','n','o','r','e','d',#000,'W','_','F','A','R',
+  ' ','i','g','n','o','r','e','d',#000,'D','_','C','r','e','a',
+  't','i','n','g',' ','i','n','l','i','n','e',' ','a','s','m',
+  ' ','l','o','o','k','u','p',' ','t','a','b','l','e','s',#000,
+  'W','_','U','s','i','n','g',' ','a',' ','d','e','f','i','n',
+  'e','d',' ','n','a','m','e',' ','a','s',' ','a',' ','l','o',
+  'c','a','l',' ','l','a','b','e','l',#000,'F','_','i','n','t',
+  'e','r','n','a','l',' ','e','r','r','o','r',' ','i','n',' ',
+  'H','a','n','d','l','e','E','x','t','e','n','d','(',')',#000,
+  'E','_','I','n','v','a','l','i','d',' ','c','h','a','r','a',
+  'c','t','e','r',':',' ','<',#000,'E','_','I','n','v','a','l',
+  'i','d',' ','c','h','a','r','a','c','t','e','r',':',' ','>',
+  #000,'E','_','U','n','s','u','p','p','o','r','t','e','d',' ',
+  'o','p','c','o','d','e',#000,'E','_','I','n','c','r','e','m',
+  'e','n','t',' ','a','n','d',' ','D','e','c','r','e','m','e',
+  'n','t',' ','m','o','d','e',' ','n','o','t',' ','a','l','l',
+  'o','w','e','d',' ','t','o','g','e','t','h','e','r',#000,'E',
+  '_','I','n','v','a','l','i','d',' ','R','e','g','i','s','t',
+  'e','r',' ','l','i','s','t',' ','i','n',' ','m','o','v','e',
+  'm','/','f','m','o','v','e','m',#000,'E','_','I','n','v','a',
+  'l','i','d',' ','R','e','g','i','s','t','e','r',' ','l','i',
+  's','t',' ','f','o','r',' ','o','p','c','o','d','e',#000,'E',
+  '_','6','8','0','2','0','+',' ','m','o','d','e',' ','r','e',
+  'q','u','i','r','e','d',' ','t','o',' ','a','s','s','e','m',
+  'b','l','e',#000,'D','_','S','t','a','r','t','i','n','g',' ',
   'M','o','t','o','r','o','l','a',' ','s','t','y','l','e','d',
   'M','o','t','o','r','o','l','a',' ','s','t','y','l','e','d',
   ' ','a','s','s','e','m','b','l','e','r',' ','p','a','r','s',
   ' ','a','s','s','e','m','b','l','e','r',' ','p','a','r','s',
-  'i','n','g','.','.','.',#000,'W','_','X','D','E','F',' ','n',
-  'o','t',' ','s','u','p','p','o','r','t','e','d',#000,'W','_',
-  'F','u','n','c','t','i','o','n','s',' ','w','i','t','h',' ',
-  'v','o','i','d',' ','r','e','t','u','r','n',' ','v','a','l',
-  'u','e',' ','c','a','n',#039,'t',' ','r','e','t','u','r','n',
-  ' ','a','n','y',' ','v','a','l','u','e',' ','i','n',' ','a',
-  's','m',' ','c','o','d','e',#000,'E','_','I','n','v','a','l',
-  'i','d',' ','s','u','f','f','i','x',' ','f','o','r',' ','i',
-  'n','t','e','l',' ','a','s','s','e','m','b','l','e','r',#000,
-  'E','_','E','x','t','e','n','d','e','d',' ','n','o','t',' ',
-  's','u','p','p','o','r','t','e','d',' ','i','n',' ','t','h',
-  'i','s',' ','m','o','d','e',#000,'E','_','C','o','m','p',' ',
-  'n','o','t',' ','s','u','p','p','o','r','t','e','d',' ','i',
-  'n',' ','t','h','i','s',' ','m','o','d','e',#000,'W','_','Y',
-  'o','u',' ','n','e','e','d',' ','G','N','U',' ','a','s',' ',
-  'v','e','r','s','i','o','n',' ','>','=',' ','2','.','8','1',
-  ' ','t','o',' ','c','o','m','p','i','l','e',' ','t','h','i',
-  's',' ','M','M','X',' ','c','o','d','e',#000,'I','_','A','s',
-  's','e','m','b','l','i','n','g',' ','(','p','i','p','e',')',
-  ' ','$','1',#000,'E','_','C','a','n',#039,'t',' ','c','r','e',
-  'a','t','e',' ','a','s','s','e','m','b','e','r',' ','f','i',
-  'l','e',' ','$','1',#000,'W','_','A','s','s','e','m','b','l',
-  'e','r',' ','$','1',' ','n','o','t',' ','f','o','u','n','d',
-  ',',' ','s','w','i','t','c','h','i','n','g',' ','t','o',' ',
-  'e','x','t','e','r','n','a','l',' ','a','s','s','e','m','b',
-  'l','i','n','g',#000,'U','_','U','s','i','n','g',' ','a','s',
-  's','e','m','b','l','e','r',':',' ','$','1',#000,'W','_','E',
-  'r','r','o','r',' ','w','h','i','l','e',' ','a','s','s','e',
-  'm','b','l','i','n','g',#000,'W','_','C','a','n',#039,'t',' ',
-  'c','a','l','l',' ','t','h','e',' ','a','s','s','e','m','b',
-  'l','e','r',',',' ','s','w','i','t','c','h','i','n','g',' ',
+  'i','n','g','.','.','.',#000,'D','_','F','i','n','i','s','h',
+  'e','d',' ','M','o','t','o','r','o','l','a',' ','s','t','y',
+  'l','e','d',' ','a','s','s','e','m','b','l','e','r',' ','p',
+  'a','r','s','i','n','g','.','.','.',#000,'W','_','X','D','E',
+  'F',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d',
+  #000,'W','_','F','u','n','c','t','i','o','n','s',' ','w','i',
+  't','h',' ','v','o','i','d',' ','r','e','t','u','r','n',' ',
+  'v','a','l','u','e',' ','c','a','n',#039,'t',' ','r','e','t',
+  'u','r','n',' ','a','n','y',' ','v','a','l','u','e',' ','i',
+  'n',' ','a','s','m',' ','c','o','d','e',#000,'E','_','I','n',
+  'v','a','l','i','d',' ','s','u','f','f','i','x',' ','f','o',
+  'r',' ','i','n','t','e','l',' ','a','s','s','e','m','b','l',
+  'e','r',#000,'E','_','E','x','t','e','n','d','e','d',' ','n',
+  'o','t',' ','s','u','p','p','o','r','t','e','d',' ','i','n',
+  ' ','t','h','i','s',' ','m','o','d','e',#000,'E','_','C','o',
+  'm','p',' ','n','o','t',' ','s','u','p','p','o','r','t','e',
+  'd',' ','i','n',' ','t','h','i','s',' ','m','o','d','e',#000,
+  'W','_','Y','o','u',' ','n','e','e','d',' ','G','N','U',' ',
+  'a','s',' ','v','e','r','s','i','o','n',' ','>','=',' ','2',
+  '.','8','1',' ','t','o',' ','c','o','m','p','i','l','e',' ',
+  't','h','i','s',' ','M','M','X',' ','c','o','d','e',#000,'I',
+  '_','A','s','s','e','m','b','l','i','n','g',' ','(','p','i',
+  'p','e',')',' ','$','1',#000,'E','_','C','a','n',#039,'t',' ',
+  'c','r','e','a','t','e',' ','a','s','s','e','m','b','e','r',
+  ' ','f','i','l','e',' ','$','1',#000,'W','_','A','s','s','e',
+  'm','b','l','e','r',' ','$','1',' ','n','o','t',' ','f','o',
+  'u','n','d',',',' ','s','w','i','t','c','h','i','n','g',' ',
   't','o',' ','e','x','t','e','r','n','a','l',' ','a','s','s',
   't','o',' ','e','x','t','e','r','n','a','l',' ','a','s','s',
-  'e','m','b','l','i','n','g',#000,'I','_','A','s','s','e','m',
-  'b','l','i','n','g',' ','$','1',#000,'W','_','L','i','n','k',
-  'e','r',' ','$','1',' ','n','o','t',' ','f','o','u','n','d',
-  ',',' ','s','w','i','t','c','h','i','n','g',' ','t','o',' ',
-  'e','x','t','e','r','n','a','l',' ','l','i','n','k','i','n',
-  'g',#000,'U','_','U','s','i','n','g',' ','l','i','n','k','e',
-  'r',':',' ','$','1',#000,'W','_','O','b','j','e','c','t',' ',
-  '$','1',' ','n','o','t',' ','f','o','u','n','d',',',' ','L',
-  'i','n','k','i','n','g',' ','m','a','y',' ','f','a','i','l',
-  ' ','!',#000,'W','_','L','i','b','r','a','r','y',' ','$','1',
-  ' ','n','o','t',' ','f','o','u','n','d',',',' ','L','i','n',
-  'k','i','n','g',' ','m','a','y',' ','f','a','i','l',' ','!',
-  #000,'W','_','E','r','r','o','r',' ','w','h','i','l','e',' ',
-  'l','i','n','k','i','n','g',#000,'W','_','C','a','n',#039,'t',
-  ' ','c','a','l','l',' ','t','h','e',' ','l','i','n','k','e',
-  'r',',',' ','s','w','i','t','c','h','i','n','g',' ','t','o',
-  ' ','e','x','t','e','r','n','a','l',' ','l','i','n','k','i',
-  'n','g',#000,'I','_','L','i','n','k','i','n','g',' ','$','1',
-  #000,'W','_','b','i','n','d','e','r',' ','n','o','t',' ','f',
-  'o','u','n','d',',',' ','s','w','i','t','c','h','i','n','g',
-  ' ','t','o',' ','e','x','t','e','r','n','a','l',' ','b','i',
-  'n','d','i','n','g',#000,'W','_','a','r',' ','n','o','t',' ',
-  'f','o','u','n','d',',',' ','s','w','i','t','c','h','i','n',
-  'g',' ','t','o',' ','e','x','t','e','r','n','a','l',' ','a',
-  'r',#000,'E','_','D','y','n','a','m','i','c',' ','L','i','b',
-  'r','a','r','i','e','s',' ','n','o','t',' ','s','u','p','p',
-  'o','r','t','e','d',#000,'I','_','C','l','o','s','i','n','g',
-  ' ','s','c','r','i','p','t',' ','$','1',#000,'U','_','P','P',
-  'U',' ','L','o','a','d','i','n','g',' ','$','1',#000,'D','_',
-  'P','P','U',' ','T','i','m','e',':',' ','$','1',#000,'D','_',
-  'P','P','U',' ','F','i','l','e',' ','t','o','o',' ','s','h',
-  'o','r','t',#000,'D','_','P','P','U',' ','I','n','v','a','l',
-  'i','d',' ','H','e','a','d','e','r',' ','(','n','o',' ','P',
-  'P','U',' ','a','t',' ','t','h','e',' ','b','e','g','i','n',
-  ')',#000,'D','_','P','P','U',' ','I','n','v','a','l','i','d',
-  ' ','V','e','r','s','i','o','n',' ','$','1',#000,'D','_','P',
-  'P','U',' ','F','l','a','g','s',':',' ','$','1',#000,'D','_',
-  'P','P','U',' ','C','r','c',':',' ','$','1',#000,'T','_','P',
-  'P','U',' ','S','o','u','r','c','e',':',' ','$','1',#000,'D',
-  '_','o','b','j','e','c','t','f','i','l','e',' ','a','n','d',
-  ' ','a','s','s','e','m','b','l','e','r','f','i','l','e',' ',
-  'a','r','e',' ','o','l','d','e','r',' ','t','h','a','n',' ',
-  'p','p','u','f','i','l','e',#000,'D','_','o','b','j','e','c',
-  't','f','i','l','e',' ','i','s',' ','o','l','d','e','r',' ',
-  't','h','a','n',' ','a','s','s','e','m','b','l','e','r','f',
-  'i','l','e',#000,'T','_','U','n','i','t','s','e','a','r','c',
-  'h',':',' ','$','1',#000,'U','_','W','r','i','t','i','n','g',
-  ' ','$','1',#000,'F','_','C','a','n',#039,'t',' ','W','r','i',
-  't','e',' ','P','P','U','-','F','i','l','e',#000,'F','_','r',
-  'e','a','d','i','n','g',' ','P','P','U','-','F','i','l','e',
-  #000,'F','_','I','n','v','a','l','i','d',' ','P','P','U','-',
-  'F','i','l','e',' ','e','n','t','r','y',':',' ','$','1',#000,
-  'F','_','P','P','U',' ','D','b','x',' ','c','o','u','n','t',
-  ' ','p','r','o','b','l','e','m',#000,'E','_','I','l','l','e',
-  'g','a','l',' ','u','n','i','t',' ','n','a','m','e',':',' ',
-  '$','1',#000,'F','_','T','o','o',' ','m','u','c','h',' ','u',
-  'n','i','t','s',#000,'F','_','C','i','r','c','u','l','a','r',
-  ' ','u','n','i','t',' ','r','e','f','e','r','e','n','c','e',
-  #000,'F','_','C','a','n',#039,'t',' ','c','o','m','p','i','l',
-  'e',' ','u','n','i','t',' ','$','1',',',' ','n','o',' ','s',
-  'o','u','r','c','e','s',' ','a','v','a','i','l','a','b','l',
-  'e',#000,'W','_','C','o','m','p','i','l','i','n','g',' ','t',
-  'h','e',' ','s','y','s','t','e','m',' ','u','n','i','t',' ',
-  'r','e','q','u','i','r','e','s',' ','t','h','e',' ','-','U',
-  's',' ','s','w','i','t','c','h',#000,'F','_','T','h','e','r',
-  'e',' ','w','e','r','e',' ','$','1',' ','e','r','r','o','r',
-  's',' ','c','o','m','p','i','l','i','n','g',' ','m','o','d',
-  'u','l','e',',',' ','s','t','o','p','p','i','n','g',#000);
+  'e','m','b','l','i','n','g',#000,'U','_','U','s','i','n','g',
+  ' ','a','s','s','e','m','b','l','e','r',':',' ','$','1',#000,
+  'W','_','E','r','r','o','r',' ','w','h','i','l','e',' ','a',
+  's','s','e','m','b','l','i','n','g',#000,'W','_','C','a','n',
+  #039,'t',' ','c','a','l','l',' ','t','h','e',' ','a','s','s',
+  'e','m','b','l','e','r',',',' ','s','w','i','t','c','h','i',
+  'n','g',' ','t','o',' ','e','x','t','e','r','n','a','l',' ',
+  'a','s','s','e','m','b','l','i','n','g',#000,'I','_','A','s',
+  's','e','m','b','l','i','n','g',' ','$','1',#000,'W','_','L',
+  'i','n','k','e','r',' ','$','1',' ','n','o','t',' ','f','o',
+  'u','n','d',',',' ','s','w','i','t','c','h','i','n','g',' ',
+  't','o',' ','e','x','t','e','r','n','a','l',' ','l','i','n',
+  'k','i','n','g',#000,'U','_','U','s','i','n','g',' ','l','i',
+  'n','k','e','r',':',' ','$','1',#000,'W','_','O','b','j','e',
+  'c','t',' ','$','1',' ','n','o','t',' ','f','o','u','n','d',
+  ',',' ','L','i','n','k','i','n','g',' ','m','a','y',' ','f',
+  'a','i','l',' ','!',#000,'W','_','L','i','b','r','a','r','y',
+  ' ','$','1',' ','n','o','t',' ','f','o','u','n','d',',',' ',
+  'L','i','n','k','i','n','g',' ','m','a','y',' ','f','a','i',
+  'l',' ','!',#000,'W','_','E','r','r','o','r',' ','w','h','i',
+  'l','e',' ','l','i','n','k','i','n','g',#000,'W','_','C','a',
+  'n',#039,'t',' ','c','a','l','l',' ','t','h','e',' ','l','i',
+  'n','k','e','r',',',' ','s','w','i','t','c','h','i','n','g',
+  ' ','t','o',' ','e','x','t','e','r','n','a','l',' ','l','i',
+  'n','k','i','n','g',#000,'I','_','L','i','n','k','i','n','g',
+  ' ','$','1',#000,'W','_','b','i','n','d','e','r',' ','n','o',
+  't',' ','f','o','u','n','d',',',' ','s','w','i','t','c','h',
+  'i','n','g',' ','t','o',' ','e','x','t','e','r','n','a','l',
+  ' ','b','i','n','d','i','n','g',#000,'W','_','a','r',' ','n',
+  'o','t',' ','f','o','u','n','d',',',' ','s','w','i','t','c',
+  'h','i','n','g',' ','t','o',' ','e','x','t','e','r','n','a',
+  'l',' ','a','r',#000,'E','_','D','y','n','a','m','i','c',' ',
+  'L','i','b','r','a','r','i','e','s',' ','n','o','t',' ','s',
+  'u','p','p','o','r','t','e','d',#000,'I','_','C','l','o','s',
+  'i','n','g',' ','s','c','r','i','p','t',' ','$','1',#000,'U',
+  '_','P','P','U',' ','L','o','a','d','i','n','g',' ','$','1',
+  #000,'D','_','P','P','U',' ','T','i','m','e',':',' ','$','1',
+  #000,'D','_','P','P','U',' ','F','i','l','e',' ','t','o','o',
+  ' ','s','h','o','r','t',#000,'D','_','P','P','U',' ','I','n',
+  'v','a','l','i','d',' ','H','e','a','d','e','r',' ','(','n',
+  'o',' ','P','P','U',' ','a','t',' ','t','h','e',' ','b','e',
+  'g','i','n',')',#000,'D','_','P','P','U',' ','I','n','v','a',
+  'l','i','d',' ','V','e','r','s','i','o','n',' ','$','1',#000,
+  'D','_','P','P','U',' ','F','l','a','g','s',':',' ','$','1',
+  #000,'D','_','P','P','U',' ','C','r','c',':',' ','$','1',#000,
+  'T','_','P','P','U',' ','S','o','u','r','c','e',':',' ','$',
+  '1',#000,'D','_','o','b','j','e','c','t','f','i','l','e',' ',
+  'a','n','d',' ','a','s','s','e','m','b','l','e','r','f','i',
+  'l','e',' ','a','r','e',' ','o','l','d','e','r',' ','t','h',
+  'a','n',' ','p','p','u','f','i','l','e',#000,'D','_','o','b',
+  'j','e','c','t','f','i','l','e',' ','i','s',' ','o','l','d',
+  'e','r',' ','t','h','a','n',' ','a','s','s','e','m','b','l',
+  'e','r','f','i','l','e',#000,'T','_','U','n','i','t','s','e',
+  'a','r','c','h',':',' ','$','1',#000,'U','_','W','r','i','t',
+  'i','n','g',' ','$','1',#000,'F','_','C','a','n',#039,'t',' ',
+  'W','r','i','t','e',' ','P','P','U','-','F','i','l','e',#000,
+  'F','_','r','e','a','d','i','n','g',' ','P','P','U','-','F',
+  'i','l','e',#000,'F','_','I','n','v','a','l','i','d',' ','P',
+  'P','U','-','F','i','l','e',' ','e','n','t','r','y',':',' ',
+  '$','1',#000,'F','_','P','P','U',' ','D','b','x',' ','c','o',
+  'u','n','t',' ','p','r','o','b','l','e','m',#000,'E','_','I',
+  'l','l','e','g','a','l',' ','u','n','i','t',' ','n','a','m',
+  'e',':',' ','$','1',#000,'F','_','T','o','o',' ','m','u','c',
+  'h',' ','u','n','i','t','s',#000,'F','_','C','i','r','c','u',
+  'l','a','r',' ','u','n','i','t',' ','r','e','f','e','r','e',
+  'n','c','e',#000,'F','_','C','a','n',#039,'t',' ','c','o','m',
+  'p','i','l','e',' ','u','n','i','t',' ','$','1',',',' ','n',
+  'o',' ','s','o','u','r','c','e','s',' ','a','v','a','i','l',
+  'a','b','l','e',#000,'W','_','C','o','m','p','i','l','i','n',
+  'g',' ','t','h','e',' ','s','y','s','t','e','m',' ','u','n',
+  'i','t',' ','r','e','q','u','i','r','e','s',' ','t','h','e',
+  ' ','-','U','s',' ','s','w','i','t','c','h',#000,'F','_','T',
+  'h','e','r','e',' ','w','e','r','e',' ','$','1',' ','e','r',
+  'r','o','r','s',' ','c','o','m','p','i','l','i','n','g',' ',
+  'm','o','d','u','l','e',',',' ','s','t','o','p','p','i','n',
+  'g',#000);

+ 19 - 6
compiler/pass_1.pas

@@ -118,9 +118,12 @@ unit pass_1;
 
 
       begin
       begin
          case p^.treetype of
          case p^.treetype of
-            typeconvn : make_not_regable(p^.left);
-            loadn : if p^.symtableentry^.typ=varsym then
-                      pvarsym(p^.symtableentry)^.regable:=false;
+            typeconvn :
+              make_not_regable(p^.left);
+            loadn :
+              if p^.symtableentry^.typ=varsym then
+                pvarsym(p^.symtableentry)^.var_options :=
+                  pvarsym(p^.symtableentry)^.var_options and not vo_regable;
          end;
          end;
       end;
       end;
 
 
@@ -517,7 +520,7 @@ unit pass_1;
                 p^.symtableentry:=pabsolutesym(p^.symtableentry)^.ref;
                 p^.symtableentry:=pabsolutesym(p^.symtableentry)^.ref;
               p^.symtable:=p^.symtableentry^.owner;
               p^.symtable:=p^.symtableentry^.owner;
               p^.is_absolute:=true;
               p^.is_absolute:=true;
-                   end;
+           end;
          case p^.symtableentry^.typ of
          case p^.symtableentry^.typ of
             absolutesym :;
             absolutesym :;
             varsym :
             varsym :
@@ -535,7 +538,8 @@ unit pass_1;
                              p^.registers32:=1;
                              p^.registers32:=1;
                              { auáerdem kann sie nicht mehr in ein Register
                              { auáerdem kann sie nicht mehr in ein Register
                                geladen werden }
                                geladen werden }
-                             pvarsym(p^.symtableentry)^.regable:=false;
+                             pvarsym(p^.symtableentry)^.var_options :=
+                               pvarsym(p^.symtableentry)^.var_options and not vo_regable;
                           end;
                           end;
                      end;
                      end;
                    if (pvarsym(p^.symtableentry)^.varspez=vs_const) then
                    if (pvarsym(p^.symtableentry)^.varspez=vs_const) then
@@ -5013,7 +5017,16 @@ unit pass_1;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.28  1998-06-05 14:37:29  pierre
+  Revision 1.29  1998-06-09 16:01:44  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.28  1998/06/05 14:37:29  pierre
     * fixes for inline for operators
     * fixes for inline for operators
     * inline procedure more correctly restricted
     * inline procedure more correctly restricted
 
 

+ 44 - 4
compiler/pdecl.pas

@@ -1467,6 +1467,7 @@ unit pdecl;
 
 
       var
       var
          typename : stringid;
          typename : stringid;
+         newtype : ptypesym;
 {$ifdef dummy}
 {$ifdef dummy}
          olddef,newdef : pdef;
          olddef,newdef : pdef;
          s : string;
          s : string;
@@ -1495,7 +1496,8 @@ unit pdecl;
                 { is that ok ??? }
                 { is that ok ??? }
                 getmem(newdef,SizeOf(olddef));
                 getmem(newdef,SizeOf(olddef));
                 move(olddef^,newdef^,SizeOf(olddef));
                 move(olddef^,newdef^,SizeOf(olddef));
-                symtablestack^.insert(new(ptypesym,init(typename,newdef)));
+                newtype:=new(ptypesym,init(typename,newdef));
+                symtablestack^.insert(newtype);
              end
              end
            else
            else
 {$endif testequaltype}
 {$endif testequaltype}
@@ -1511,11 +1513,17 @@ unit pdecl;
                      { we can ignore the result   }
                      { we can ignore the result   }
                      { the definition is modified }
                      { the definition is modified }
                      object_dec(typename,pobjectdef(ptypesym(srsym)^.definition));
                      object_dec(typename,pobjectdef(ptypesym(srsym)^.definition));
+                     newtype:=ptypesym(srsym);
                   end
                   end
                 else
                 else
-                  symtablestack^.insert(new(ptypesym,init(typename,read_type(typename))));
+                  begin
+                     newtype:=new(ptypesym,init(typename,read_type(typename)));
+                     symtablestack^.insert(newtype);
+                  end;
              end;
              end;
            consume(SEMICOLON);
            consume(SEMICOLON);
+           if assigned(newtype^.definition) and (newtype^.definition^.deftype=procvardef) then
+             parse_var_proc_directives(newtype);
          until token<>ID;
          until token<>ID;
          typecanbeforward:=false;
          typecanbeforward:=false;
 {$ifdef tp}
 {$ifdef tp}
@@ -1566,6 +1574,7 @@ unit pdecl;
          abssym : pabsolutesym;
          abssym : pabsolutesym;
          filepos : tfileposinfo;
          filepos : tfileposinfo;
 
 
+         Csym : pvarsym;
 
 
       begin
       begin
          hs:='';
          hs:='';
@@ -1584,7 +1593,29 @@ unit pdecl;
               sc:=idlist;
               sc:=idlist;
               consume(COLON);
               consume(COLON);
               p:=read_type('');
               p:=read_type('');
-              if do_absolute and (token=ID) and (pattern='ABSOLUTE') then
+              if do_absolute and (token=ID) and (pattern='CALIAS') then
+                begin
+                   s:=sc^.get_with_tokeninfo(filepos);
+                   if sc^.get<>'' then
+                    Message(parser_e_absolute_only_one_var);
+                   dispose(sc,done);
+                   consume(ID);
+                   if (token<>CCHAR) and (token<>CSTRING) then
+                     consume(CSTRING)
+                   else
+                     begin
+                        Csym:=new(pvarsym,init_C(s,pattern,p));
+                        consume(token);
+                        consume(SEMICOLON);
+                        if (token=ID) and (pattern='EXTERNAL') then
+                          begin
+                             Csym^.var_options:=Csym^.var_options or vo_is_external;
+                             Consume(ID);
+                          end;
+                        symtablestack^.insert(Csym);
+                     end;
+                end
+              else if do_absolute and (token=ID) and (pattern='ABSOLUTE') then
                 begin
                 begin
                    s:=sc^.get_with_tokeninfo(filepos);
                    s:=sc^.get_with_tokeninfo(filepos);
                    if sc^.get<>'' then
                    if sc^.get<>'' then
@@ -1829,7 +1860,16 @@ unit pdecl;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.24  1998-06-05 14:37:32  pierre
+  Revision 1.25  1998-06-09 16:01:45  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.24  1998/06/05 14:37:32  pierre
     * fixes for inline for operators
     * fixes for inline for operators
     * inline procedure more correctly restricted
     * inline procedure more correctly restricted
 
 

+ 13 - 2
compiler/pexpr.pas

@@ -585,7 +585,9 @@ unit pexpr;
       begin
       begin
          if sym=nil then
          if sym=nil then
            begin
            begin
-              Message(sym_e_id_no_member);
+              { pattern is still valid unless
+              there is another ID just after the ID of sym }
+              Message1(sym_e_id_no_member,pattern);
               disposetree(p1);
               disposetree(p1);
               p1:=genzeronode(errorn);
               p1:=genzeronode(errorn);
               { try to clean up }
               { try to clean up }
@@ -1784,7 +1786,16 @@ unit pexpr;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.25  1998-06-05 14:37:33  pierre
+  Revision 1.26  1998-06-09 16:01:46  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.25  1998/06/05 14:37:33  pierre
     * fixes for inline for operators
     * fixes for inline for operators
     * inline procedure more correctly restricted
     * inline procedure more correctly restricted
 
 

+ 11 - 2
compiler/pmodules.pas

@@ -22,7 +22,7 @@
 }
 }
 unit pmodules;
 unit pmodules;
 
 
-{$define TEST_IMPL}
+{define TEST_IMPL does not work well }
 
 
   interface
   interface
 
 
@@ -993,7 +993,16 @@ unit pmodules;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.25  1998-06-08 22:59:49  peter
+  Revision 1.26  1998-06-09 16:01:47  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.25  1998/06/08 22:59:49  peter
     * smartlinking works for win32
     * smartlinking works for win32
     * some defines to exclude some compiler parts
     * some defines to exclude some compiler parts
 
 

+ 12 - 1
compiler/ppu.pas

@@ -64,6 +64,8 @@ const
   ibtypedconstsym = 25;
   ibtypedconstsym = 25;
   ibabsolutesym   = 26;
   ibabsolutesym   = 26;
   ibpropertysym   = 27;
   ibpropertysym   = 27;
+  ibvarsym_C      = 28;
+  
   {defenitions}
   {defenitions}
   iborddef        = 40;
   iborddef        = 40;
   ibpointerdef    = 41;
   ibpointerdef    = 41;
@@ -742,7 +744,16 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.3  1998-05-28 14:40:26  peter
+  Revision 1.4  1998-06-09 16:01:48  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.3  1998/05/28 14:40:26  peter
     * fixes for newppu, remake3 works now with it
     * fixes for newppu, remake3 works now with it
 
 
   Revision 1.2  1998/05/27 19:45:08  peter
   Revision 1.2  1998/05/27 19:45:08  peter

+ 70 - 14
compiler/symsym.inc

@@ -872,6 +872,7 @@
          tsym.init(n);
          tsym.init(n);
          typ:=varsym;
          typ:=varsym;
          definition:=p;
          definition:=p;
+         _mangledname:=nil;
          varspez:=vs_value;
          varspez:=vs_value;
          address:=0;
          address:=0;
          refs:=0;
          refs:=0;
@@ -880,17 +881,18 @@
          case p^.deftype of
          case p^.deftype of
         pointerdef,
         pointerdef,
            enumdef,
            enumdef,
-        procvardef : regable:=true;
+        procvardef :
+          var_options:=var_options or vo_regable;
             orddef : case porddef(p)^.typ of
             orddef : case porddef(p)^.typ of
-                      u8bit,s32bit,
-                    bool8bit,uchar,
-                      s8bit,s16bit,
-                     u16bit,u32bit : regable:=true;
+                       u8bit,u16bit,u32bit,
+                       bool8bit,bool16bit,bool32bit,
+                       s8bit,s16bit,s32bit :
+                         var_options:=var_options or vo_regable;
                      else
                      else
-                       regable:=false;
+                       var_options:=var_options and not vo_regable;
                      end;
                      end;
          else
          else
-           regable:=false;
+           var_options:=var_options and not vo_regable;
          end;
          end;
          reg:=R_NO;
          reg:=R_NO;
       end;
       end;
@@ -900,6 +902,7 @@
       begin
       begin
          tsym.load;
          tsym.load;
          typ:=varsym;
          typ:=varsym;
+         _mangledname:=nil;
          varspez:=tvarspez(readbyte);
          varspez:=tvarspez(readbyte);
          if read_member then
          if read_member then
            address:=readlong
            address:=readlong
@@ -908,10 +911,28 @@
          refs := 0;
          refs := 0;
          is_valid := 1;
          is_valid := 1;
          { symbols which are load are never candidates for a register }
          { symbols which are load are never candidates for a register }
-         regable:=false;
+         var_options:=0;
+         { was regable:=false; }
          reg:=R_NO;
          reg:=R_NO;
       end;
       end;
 
 
+    constructor tvarsym.init_C(const n,mangled : string;p : pdef);
+
+      begin
+         init(n,p);
+         var_options:=var_options or vo_is_C_var;
+         _mangledname:=strpnew(target_os.Cprefix+mangled);
+      end;
+      
+    constructor tvarsym.load_C;
+
+      begin
+         load;
+         typ:=varsym;
+         var_options:=readbyte;
+         _mangledname:=strpnew(readstring);
+      end;
+
     procedure tvarsym.deref;
     procedure tvarsym.deref;
 
 
       begin
       begin
@@ -922,7 +943,10 @@
 
 
       begin
       begin
 {$ifndef NEWPPU}
 {$ifndef NEWPPU}
-         writebyte(ibvarsym);
+         if (var_options and vo_is_C_var)<>0 then
+           writebyte(ibvarsym_C)
+         else
+           writebyte(ibvarsym);
 {$endif}
 {$endif}
          tsym.write;
          tsym.write;
          writebyte(byte(varspez));
          writebyte(byte(varspez));
@@ -931,7 +955,15 @@
            writelong(address);
            writelong(address);
 
 
          writedefref(definition);
          writedefref(definition);
+         if (var_options and vo_is_C_var)<>0 then
+           begin
+              writebyte(var_options);
+              writestring(mangledname);
+           end;
 {$ifdef NEWPPU}
 {$ifdef NEWPPU}
+         if (var_options and vo_is_C_var)<>0 then
+           ppufile^.writeentry(ibvarsym_C)
+         else
          ppufile^.writeentry(ibvarsym);
          ppufile^.writeentry(ibvarsym);
 {$endif}
 {$endif}
       end;
       end;
@@ -940,6 +972,11 @@
       var
       var
         prefix : string;
         prefix : string;
       begin
       begin
+         if assigned(_mangledname) then
+           begin
+              mangledname:=strpas(_mangledname);
+              exit;
+           end;
          case owner^.symtabletype of
          case owner^.symtabletype of
            staticsymtable : if (cs_smartlink in aktswitches) then
            staticsymtable : if (cs_smartlink in aktswitches) then
                               prefix:='_'+owner^.name^+'$$$_'
                               prefix:='_'+owner^.name^+'$$$_'
@@ -981,6 +1018,8 @@
       var
       var
          l,modulo : longint;
          l,modulo : longint;
       begin
       begin
+       if (var_options and vo_is_external)<>0 then
+         exit;
        { handle static variables of objects especially }
        { handle static variables of objects especially }
        if read_member and (owner^.symtabletype=objectsymtable) and
        if read_member and (owner^.symtabletype=objectsymtable) and
           ((properties and sp_static)<>0) then
           ((properties and sp_static)<>0) then
@@ -988,7 +1027,7 @@
             { the data filed is generated in parser.pas
             { the data filed is generated in parser.pas
               with a tobject_FIELDNAME variable }
               with a tobject_FIELDNAME variable }
             { this symbol can't be loaded to a register }
             { this symbol can't be loaded to a register }
-            regable:=false;
+            var_options:=var_options or vo_regable;
          end
          end
        else if not(read_member) then
        else if not(read_member) then
          begin
          begin
@@ -1039,7 +1078,7 @@
                 inc(owner^.datasize,l);
                 inc(owner^.datasize,l);
 
 
                 { this symbol can't be loaded to a register }
                 { this symbol can't be loaded to a register }
-                regable:=false;
+                var_options:=var_options and not vo_regable;
               end
               end
             else if owner^.symtabletype=globalsymtable then
             else if owner^.symtabletype=globalsymtable then
               begin
               begin
@@ -1059,7 +1098,7 @@
                  inc(owner^.datasize,l);
                  inc(owner^.datasize,l);
 
 
                  { this symbol can't be loaded to a register }
                  { this symbol can't be loaded to a register }
-                 regable:=false;
+                 var_options:=var_options and not vo_regable;
               end
               end
             else if owner^.symtabletype in [recordsymtable,objectsymtable] then
             else if owner^.symtabletype in [recordsymtable,objectsymtable] then
               begin
               begin
@@ -1084,7 +1123,7 @@
                  inc(owner^.datasize,l);
                  inc(owner^.datasize,l);
 
 
                  { this symbol can't be loaded to a register }
                  { this symbol can't be loaded to a register }
-                 regable:=false;
+                var_options:=var_options and not vo_regable;
               end
               end
              else if owner^.symtabletype=parasymtable then
              else if owner^.symtabletype=parasymtable then
               begin
               begin
@@ -1202,6 +1241,14 @@
       end;
       end;
 {$endif GDB}
 {$endif GDB}
 
 
+    destructor tvarsym.done;
+
+      begin
+         strdispose(_mangledname);
+         inherited done;
+      end;
+      
+
 {****************************************************************************
 {****************************************************************************
                              TTYPEDCONSTSYM
                              TTYPEDCONSTSYM
 *****************************************************************************}
 *****************************************************************************}
@@ -1694,7 +1741,16 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.6  1998-06-08 22:59:53  peter
+  Revision 1.7  1998-06-09 16:01:51  pierre
+    + added procedure directive parsing for procvars
+      (accepted are popstack cdecl and pascal)
+    + added C vars with the following syntax
+      var C calias 'true_c_name';(can be followed by external)
+      reason is that you must add the Cprefix
+
+      which is target dependent
+
+  Revision 1.6  1998/06/08 22:59:53  peter
     * smartlinking works for win32
     * smartlinking works for win32
     * some defines to exclude some compiler parts
     * some defines to exclude some compiler parts