Jelajahi Sumber

+ 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 tahun lalu
induk
melakukan
5ad339b3d8
12 mengubah file dengan 832 tambahan dan 632 penghapusan
  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,
                      p^.procdefinition^.parast^.datasize);
                 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
          else
+           { now procedure variable case }
            begin
               if (pushedparasize mod 4)<>0 then
                 begin
@@ -1143,6 +1124,29 @@ implementation
               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;
       dont_call:
          pushedparasize:=oldpushedparasize;
@@ -1281,7 +1285,6 @@ implementation
                 emitcall(p^.procdefinition^.mangledname);}
               emitcall('IOCHECK',true);
            end;
-         { this should be optimized (PM) }
          if must_pop then
            exprasmlist^.concat(new(pai386,op_const_reg(A_ADD,S_L,pop_size,R_ESP)));
          { restore registers }
@@ -2190,7 +2193,16 @@ implementation
 end.
 {
   $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
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 124 - 105
compiler/cg386ld.pas

@@ -81,129 +81,139 @@ implementation
               varsym :
                  begin
                     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
-                         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
                     else
                       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
-                              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
-                                   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
+                                        hregister:=getregister32;
+     
                                         { 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)));
-                                        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;
-                                   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);
                                                        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);
-                                                    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;
+                                   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;
-                         { 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
-                                   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
-                                   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;
-                              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;
               procsym:
@@ -510,7 +520,16 @@ implementation
 end.
 {
   $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
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 2
compiler/cg68k.pas

@@ -4909,7 +4909,7 @@ end;
          i,j,k : longint;
 
       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
               { walk through all momentary register variables }
               for i:=1 to maxvarregs do
@@ -5137,7 +5137,16 @@ end.
 
 {
   $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
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 2
compiler/cgi386.pas

@@ -280,7 +280,7 @@ implementation
          i,j,k : longint;
 
       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
               { walk through all momentary register variables }
               for i:=1 to maxvarregs do
@@ -516,7 +516,16 @@ implementation
 end.
 {
   $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
       because it is processor independent
     * mppc68k.bat modified to undefine i386 and support_mmx

+ 11 - 1
compiler/files.pas

@@ -204,6 +204,7 @@ unit files;
        ibunitname      = 34;
        ibwidestringdef = 35;
        ibstaticlibs    = 36;
+       ibvarsym_C      = 37;
        ibend           = 255;
 
        { unit flags }
@@ -937,7 +938,16 @@ unit files;
 end.
 {
   $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
 
   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','_','U','n','i','t','s',' ','a','r','e',' ','s','e','a',
   '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',
   'r','e',' ','t','o',' ','u','s','e',' ','t','h','e',' ','c',
   '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',
   ' ','s','e','e','m',' ','t','o',' ','b','e',' ','i','n','i',
   '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',
   ' ','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',
-  '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',
   ' ','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','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',
-  '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',
-  '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',
-  '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',
-  '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',
   ' ','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',
-  '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
          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;
 
@@ -517,7 +520,7 @@ unit pass_1;
                 p^.symtableentry:=pabsolutesym(p^.symtableentry)^.ref;
               p^.symtable:=p^.symtableentry^.owner;
               p^.is_absolute:=true;
-                   end;
+           end;
          case p^.symtableentry^.typ of
             absolutesym :;
             varsym :
@@ -535,7 +538,8 @@ unit pass_1;
                              p^.registers32:=1;
                              { auáerdem kann sie nicht mehr in ein Register
                                geladen werden }
-                             pvarsym(p^.symtableentry)^.regable:=false;
+                             pvarsym(p^.symtableentry)^.var_options :=
+                               pvarsym(p^.symtableentry)^.var_options and not vo_regable;
                           end;
                      end;
                    if (pvarsym(p^.symtableentry)^.varspez=vs_const) then
@@ -5013,7 +5017,16 @@ unit pass_1;
 end.
 {
   $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
     * inline procedure more correctly restricted
 

+ 44 - 4
compiler/pdecl.pas

@@ -1467,6 +1467,7 @@ unit pdecl;
 
       var
          typename : stringid;
+         newtype : ptypesym;
 {$ifdef dummy}
          olddef,newdef : pdef;
          s : string;
@@ -1495,7 +1496,8 @@ unit pdecl;
                 { is that ok ??? }
                 getmem(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
            else
 {$endif testequaltype}
@@ -1511,11 +1513,17 @@ unit pdecl;
                      { we can ignore the result   }
                      { the definition is modified }
                      object_dec(typename,pobjectdef(ptypesym(srsym)^.definition));
+                     newtype:=ptypesym(srsym);
                   end
                 else
-                  symtablestack^.insert(new(ptypesym,init(typename,read_type(typename))));
+                  begin
+                     newtype:=new(ptypesym,init(typename,read_type(typename)));
+                     symtablestack^.insert(newtype);
+                  end;
              end;
            consume(SEMICOLON);
+           if assigned(newtype^.definition) and (newtype^.definition^.deftype=procvardef) then
+             parse_var_proc_directives(newtype);
          until token<>ID;
          typecanbeforward:=false;
 {$ifdef tp}
@@ -1566,6 +1574,7 @@ unit pdecl;
          abssym : pabsolutesym;
          filepos : tfileposinfo;
 
+         Csym : pvarsym;
 
       begin
          hs:='';
@@ -1584,7 +1593,29 @@ unit pdecl;
               sc:=idlist;
               consume(COLON);
               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
                    s:=sc^.get_with_tokeninfo(filepos);
                    if sc^.get<>'' then
@@ -1829,7 +1860,16 @@ unit pdecl;
 end.
 {
   $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
     * inline procedure more correctly restricted
 

+ 13 - 2
compiler/pexpr.pas

@@ -585,7 +585,9 @@ unit pexpr;
       begin
          if sym=nil then
            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);
               p1:=genzeronode(errorn);
               { try to clean up }
@@ -1784,7 +1786,16 @@ unit pexpr;
 end.
 {
   $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
     * inline procedure more correctly restricted
 

+ 11 - 2
compiler/pmodules.pas

@@ -22,7 +22,7 @@
 }
 unit pmodules;
 
-{$define TEST_IMPL}
+{define TEST_IMPL does not work well }
 
   interface
 
@@ -993,7 +993,16 @@ unit pmodules;
 end.
 {
   $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
     * some defines to exclude some compiler parts
 

+ 12 - 1
compiler/ppu.pas

@@ -64,6 +64,8 @@ const
   ibtypedconstsym = 25;
   ibabsolutesym   = 26;
   ibpropertysym   = 27;
+  ibvarsym_C      = 28;
+  
   {defenitions}
   iborddef        = 40;
   ibpointerdef    = 41;
@@ -742,7 +744,16 @@ end;
 end.
 {
   $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
 
   Revision 1.2  1998/05/27 19:45:08  peter

+ 70 - 14
compiler/symsym.inc

@@ -872,6 +872,7 @@
          tsym.init(n);
          typ:=varsym;
          definition:=p;
+         _mangledname:=nil;
          varspez:=vs_value;
          address:=0;
          refs:=0;
@@ -880,17 +881,18 @@
          case p^.deftype of
         pointerdef,
            enumdef,
-        procvardef : regable:=true;
+        procvardef :
+          var_options:=var_options or vo_regable;
             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
-                       regable:=false;
+                       var_options:=var_options and not vo_regable;
                      end;
          else
-           regable:=false;
+           var_options:=var_options and not vo_regable;
          end;
          reg:=R_NO;
       end;
@@ -900,6 +902,7 @@
       begin
          tsym.load;
          typ:=varsym;
+         _mangledname:=nil;
          varspez:=tvarspez(readbyte);
          if read_member then
            address:=readlong
@@ -908,10 +911,28 @@
          refs := 0;
          is_valid := 1;
          { symbols which are load are never candidates for a register }
-         regable:=false;
+         var_options:=0;
+         { was regable:=false; }
          reg:=R_NO;
       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;
 
       begin
@@ -922,7 +943,10 @@
 
       begin
 {$ifndef NEWPPU}
-         writebyte(ibvarsym);
+         if (var_options and vo_is_C_var)<>0 then
+           writebyte(ibvarsym_C)
+         else
+           writebyte(ibvarsym);
 {$endif}
          tsym.write;
          writebyte(byte(varspez));
@@ -931,7 +955,15 @@
            writelong(address);
 
          writedefref(definition);
+         if (var_options and vo_is_C_var)<>0 then
+           begin
+              writebyte(var_options);
+              writestring(mangledname);
+           end;
 {$ifdef NEWPPU}
+         if (var_options and vo_is_C_var)<>0 then
+           ppufile^.writeentry(ibvarsym_C)
+         else
          ppufile^.writeentry(ibvarsym);
 {$endif}
       end;
@@ -940,6 +972,11 @@
       var
         prefix : string;
       begin
+         if assigned(_mangledname) then
+           begin
+              mangledname:=strpas(_mangledname);
+              exit;
+           end;
          case owner^.symtabletype of
            staticsymtable : if (cs_smartlink in aktswitches) then
                               prefix:='_'+owner^.name^+'$$$_'
@@ -981,6 +1018,8 @@
       var
          l,modulo : longint;
       begin
+       if (var_options and vo_is_external)<>0 then
+         exit;
        { handle static variables of objects especially }
        if read_member and (owner^.symtabletype=objectsymtable) and
           ((properties and sp_static)<>0) then
@@ -988,7 +1027,7 @@
             { the data filed is generated in parser.pas
               with a tobject_FIELDNAME variable }
             { this symbol can't be loaded to a register }
-            regable:=false;
+            var_options:=var_options or vo_regable;
          end
        else if not(read_member) then
          begin
@@ -1039,7 +1078,7 @@
                 inc(owner^.datasize,l);
 
                 { this symbol can't be loaded to a register }
-                regable:=false;
+                var_options:=var_options and not vo_regable;
               end
             else if owner^.symtabletype=globalsymtable then
               begin
@@ -1059,7 +1098,7 @@
                  inc(owner^.datasize,l);
 
                  { this symbol can't be loaded to a register }
-                 regable:=false;
+                 var_options:=var_options and not vo_regable;
               end
             else if owner^.symtabletype in [recordsymtable,objectsymtable] then
               begin
@@ -1084,7 +1123,7 @@
                  inc(owner^.datasize,l);
 
                  { this symbol can't be loaded to a register }
-                 regable:=false;
+                var_options:=var_options and not vo_regable;
               end
              else if owner^.symtabletype=parasymtable then
               begin
@@ -1202,6 +1241,14 @@
       end;
 {$endif GDB}
 
+    destructor tvarsym.done;
+
+      begin
+         strdispose(_mangledname);
+         inherited done;
+      end;
+      
+
 {****************************************************************************
                              TTYPEDCONSTSYM
 *****************************************************************************}
@@ -1694,7 +1741,16 @@
 
 {
   $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
     * some defines to exclude some compiler parts