Example #1
0
        public static void _lvr_svr_q(CpuThreadState cpuThreadState, bool save, float *r0, float *r1, float *r2,
                                      float *r3, uint address)
        {
            //Console.Error.WriteLine("+RRRRRRRRRRRRR {0:X8}", Address);

            int k = (int)(4 - ((address >> 2) & 3));
            //Address &= unchecked((uint)~0xF);

            var r = stackalloc float *[4];

            r[0] = r0;
            r[1] = r1;
            r[2] = r2;
            r[3] = r3;

            fixed(float *vfpr = &cpuThreadState.Vfr0)
            {
                for (var j = 0; j < k; j++, address += 4)
                {
                    var ptr           = r[j];
                    var memoryAddress = address;
                    var memory        = (float *)cpuThreadState.GetMemoryPtr(memoryAddress);

                    //Console.Error.WriteLine("_lvl_svr_q({0}): {1:X8}: Reg({2:X8}) {3} Mem({4:X8})", j, memory_address, *(int*)ptr, Save ? "->" : "<-", *(int*)memory);

                    LanguageUtils.Transfer(ref *memory, ref *ptr, save);

                    //Console.Error.WriteLine("_lvl_svr_q({0}): {1:X8}: Reg({2:X8}) {3} Mem({4:X8})", j, memory_address, *(int*)ptr, Save ? "->" : "<-", *(int*)memory);
                }
            }

            //Console.Error.WriteLine("--------------");
        }