Просмотр исходного кода

Fix return type mismatch on 32-bit titles (#3000)

gdkchan 4 лет назад
Родитель
Сommit
bd215e447d

+ 5 - 0
ARMeilleure/Instructions/InstEmitFlowHelper.cs

@@ -163,6 +163,11 @@ namespace ARMeilleure.Instructions
         {
             if (isReturn)
             {
+                if (target.Type == OperandType.I32)
+                {
+                    target = context.ZeroExtend32(OperandType.I64, target);
+                }
+
                 context.Return(target);
             }
             else

+ 3 - 3
ARMeilleure/Instructions/InstEmitMemory.cs

@@ -101,7 +101,7 @@ namespace ARMeilleure.Instructions
 
             Operand address = GetAddress(context);
 
-            InstEmitMemoryHelper.EmitStore(context, address, op.Rt, op.Size);
+            EmitStore(context, address, op.Rt, op.Size);
 
             EmitWBackIfNeeded(context, address);
         }
@@ -113,8 +113,8 @@ namespace ARMeilleure.Instructions
             Operand address = GetAddress(context);
             Operand address2 = GetAddress(context, 1L << op.Size);
 
-            InstEmitMemoryHelper.EmitStore(context, address,  op.Rt,  op.Size);
-            InstEmitMemoryHelper.EmitStore(context, address2, op.Rt2, op.Size);
+            EmitStore(context, address,  op.Rt,  op.Size);
+            EmitStore(context, address2, op.Rt2, op.Size);
 
             EmitWBackIfNeeded(context, address);
         }