Browse Source

* initialize output of process_ea

git-svn-id: trunk@3323 -
peter 19 years ago
parent
commit
22ada6da0d
1 changed files with 8 additions and 12 deletions
  1. 8 12
      compiler/x86/aasmcpu.pas

+ 8 - 12
compiler/x86/aasmcpu.pas

@@ -1403,7 +1403,7 @@ implementation
 
 
 {$ifdef x86_64}
-    function process_ea(const input:toper;var output:ea;rfield:longint):boolean;
+    function process_ea(const input:toper;out output:ea;rfield:longint):boolean;
       var
         sym   : tasmsymbol;
         md,s,rv  : byte;
@@ -1413,12 +1413,11 @@ implementation
         isub,bsub : tsubregister;
       begin
         process_ea:=false;
+        fillchar(output,sizeof(output),0);
         {Register ?}
         if (input.typ=top_reg) then
           begin
             rv:=regval(input.reg);
-            output.sib_present:=false;
-            output.bytes:=0;
             output.modrm:=$c0 or (rfield shl 3) or rv;
             output.size:=1;
 
@@ -1588,7 +1587,7 @@ implementation
 
 {$else x86_64}
 
-    function process_ea(const input:toper;var output:ea;rfield:longint):boolean;
+    function process_ea(const input:toper;out output:ea;rfield:longint):boolean;
       var
         sym   : tasmsymbol;
         md,s,rv  : byte;
@@ -1598,12 +1597,11 @@ implementation
         isub,bsub : tsubregister;
       begin
         process_ea:=false;
+        fillchar(output,sizeof(output),0);
         {Register ?}
         if (input.typ=top_reg) then
           begin
             rv:=regval(input.reg);
-            output.sib_present:=false;
-            output.bytes:=0;
             output.modrm:=$c0 or (rfield shl 3) or rv;
             output.size:=1;
             process_ea:=true;
@@ -1890,8 +1888,6 @@ implementation
                       end;
                   end;
 
-                ea_data.rex:=0;
-                ea_data.rex_present:=false;
 {$endif x86_64}
                 if not process_ea(oper[(c shr 3) and 7]^, ea_data, 0) then
                   Message(asmw_e_invalid_effective_address)
@@ -2073,14 +2069,14 @@ implementation
             8,9,10 :
               begin
                 { rex should be written at this point }
-{
+(*
 {$ifdef x86_64}
 {$ifdef extdebug}
                 if (rex<>0) and not(rexwritten) then
                   internalerror(200603192);
 {$endif extdebug}
 {$endif x86_64}
-}
+*)
 {$ifdef x86_64}
                 if rex<>0 then
                   begin
@@ -2224,7 +2220,7 @@ implementation
                       Message(asmw_e_64bit_not_supported);
 {$endif x86_64}
                 end;
-{
+(*
 {$ifdef x86_64}
                 if rex<>0 then
                   begin
@@ -2235,7 +2231,7 @@ implementation
                     objdata.writebytes(bytes,1);
                   end;
 {$endif x86_64}
-}
+*)
               end;
             212 :
               begin