@@ -202,10 +202,7 @@ class X86DynaRecCPU : public PCSX::R3000Acpu {
202
202
void recLHU ();
203
203
void recLW ();
204
204
205
- void iLWLk (uint32_t shift);
206
205
void recLWL ();
207
-
208
- void iLWRk (uint32_t shift);
209
206
void recLWR ();
210
207
211
208
void recSB ();
@@ -1737,17 +1734,6 @@ void X86DynaRecCPU::recLW() {
1737
1734
gen.ADD32ItoR (PCSX::ix86::ESP, 4 );
1738
1735
}
1739
1736
1740
- void X86DynaRecCPU::iLWLk (uint32_t shift) {
1741
- if (IsConst (_Rt_)) {
1742
- gen.MOV32ItoR (PCSX::ix86::ECX, m_iRegs[_Rt_].k );
1743
- } else {
1744
- gen.MOV32MtoR (PCSX::ix86::ECX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
1745
- }
1746
- gen.AND32ItoR (PCSX::ix86::ECX, g_LWL_MASK[shift]);
1747
- gen.SHL32ItoR (PCSX::ix86::EAX, g_LWL_SHIFT[shift]);
1748
- gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX);
1749
- }
1750
-
1751
1737
void X86DynaRecCPU::recLWL () {
1752
1738
// Rt = Rt Merge mem[Rs + Im]
1753
1739
@@ -1760,24 +1746,27 @@ void X86DynaRecCPU::recLWL() {
1760
1746
if (IsConst (_Rs_)) {
1761
1747
uint32_t addr = m_iRegs[_Rs_].k + _Imm_;
1762
1748
int t = addr >> 16 ;
1749
+ auto iLWLk = [&](uint32_t shift, uint32_t ptr) {
1750
+ gen.MOV32MtoR (PCSX::ix86::EAX, ptr);
1751
+ if (LWL_SHIFT[shift]) gen.SHL32ItoR (PCSX::ix86::EAX, LWL_SHIFT[shift]);
1752
+ gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1753
+ if (LWL_MASK_INDEX[shift]) {
1754
+ gen.MOV32ItoR (PCSX::ix86::ECX, LWL_MASK_INDEX[shift]);
1755
+ gen.SHL32ItoR (PCSX::ix86::ECX, 16 );
1756
+ gen.OR32RtoR (PCSX::ix86::EBX, PCSX::ix86::ECX);
1757
+ }
1758
+ };
1763
1759
1764
1760
if ((t & 0x1fe0 ) == 0 ) {
1765
- gen.MOV32MtoR (PCSX::ix86::EAX, (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxM [addr & 0x1ffffc ]);
1766
- iLWLk (addr & 3 );
1767
- gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1761
+ iLWLk (addr & 3 , (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxM [addr & 0x1ffffc ]);
1768
1762
return ;
1769
1763
}
1770
1764
if (t == 0x1f80 && addr < 0x1f801000 ) {
1771
- gen.MOV32MtoR (PCSX::ix86::EAX, (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxH [addr & 0xffc ]);
1772
- iLWLk (addr & 3 );
1773
- gen.MOV32RtoM (PCSX::ix86::EDI, PCSX::ix86::EAX);
1765
+ iLWLk (addr & 3 , (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxH [addr & 0xffc ]);
1774
1766
return ;
1775
1767
}
1776
- }
1777
-
1778
- if (IsConst (_Rs_))
1779
1768
gen.MOV32ItoR (PCSX::ix86::EAX, m_iRegs[_Rs_].k + _Imm_);
1780
- else {
1769
+ } else {
1781
1770
gen.MOV32MtoR (PCSX::ix86::EAX, (uint32_t )&m_psxRegs.GPR .r [_Rs_]);
1782
1771
if (_Imm_) gen.ADD32ItoR (PCSX::ix86::EAX, _Imm_);
1783
1772
}
@@ -1791,36 +1780,21 @@ void X86DynaRecCPU::recLWL() {
1791
1780
gen.POP32R (PCSX::ix86::EDX);
1792
1781
gen.AND32ItoR (PCSX::ix86::EDX, 0x3 ); // shift = addr & 3;
1793
1782
1794
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_LWL_SHIFT );
1783
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )LWL_SHIFT );
1795
1784
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
1796
- gen.SHL32CLtoR (PCSX::ix86::EAX); // mem(PCSX::ix86::EAX) << g_LWL_SHIFT[shift]
1785
+ gen.SHL32CLtoR (PCSX::ix86::EAX); // mem(PCSX::ix86::EAX) << LWL_SHIFT[shift]
1786
+ gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1797
1787
1798
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_LWL_MASK );
1788
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )LWL_MASK_INDEX );
1799
1789
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
1800
- if (IsConst (_Rt_)) {
1801
- gen.MOV32ItoR (PCSX::ix86::EDX, m_iRegs[_Rt_].k );
1802
- } else {
1803
- gen.MOV32MtoR (PCSX::ix86::EDX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
1804
- }
1805
- gen.AND32RtoR (PCSX::ix86::EDX, PCSX::ix86::ECX); // _rRt_ & g_LWL_MASK[shift]
1806
- gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::EDX);
1807
- gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1790
+ gen.SHL32ItoR (PCSX::ix86::ECX, 16 );
1791
+ gen.AND32ItoR (PCSX::ix86::EBX, 0xffff );
1792
+ gen.OR32RtoR (PCSX::ix86::EBX, PCSX::ix86::ECX);
1808
1793
} else {
1809
1794
gen.ADD32ItoR (PCSX::ix86::ESP, 8 );
1810
1795
}
1811
1796
}
1812
1797
1813
- void X86DynaRecCPU::iLWRk (uint32_t shift) {
1814
- if (IsConst (_Rt_)) {
1815
- gen.MOV32ItoR (PCSX::ix86::ECX, m_iRegs[_Rt_].k );
1816
- } else {
1817
- gen.MOV32MtoR (PCSX::ix86::ECX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
1818
- }
1819
- gen.AND32ItoR (PCSX::ix86::ECX, g_LWR_MASK[shift]);
1820
- gen.SHR32ItoR (PCSX::ix86::EAX, g_LWR_SHIFT[shift]);
1821
- gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX);
1822
- }
1823
-
1824
1798
void X86DynaRecCPU::recLWR () {
1825
1799
// Rt = Rt Merge mem[Rs + Im]
1826
1800
@@ -1834,23 +1808,27 @@ void X86DynaRecCPU::recLWR() {
1834
1808
uint32_t addr = m_iRegs[_Rs_].k + _Imm_;
1835
1809
int t = addr >> 16 ;
1836
1810
1837
- if ((t & 0x1fe0 ) == 0 ) {
1838
- gen.MOV32MtoR (PCSX::ix86::EAX, ( uint32_t )&PCSX::g_emulator. m_psxMem -> g_psxM [addr & 0x1ffffc ] );
1839
- iLWRk (addr & 3 );
1811
+ auto iLWRk = [&]( uint32_t shift, uint32_t ptr ) {
1812
+ gen.MOV32MtoR (PCSX::ix86::EAX, ptr );
1813
+ if (LWR_SHIFT[shift]) gen. SHL32ItoR (PCSX::ix86::EAX, LWR_SHIFT[shift] );
1840
1814
gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1815
+ if (LWR_MASK_INDEX[shift]) {
1816
+ gen.MOV32ItoR (PCSX::ix86::ECX, LWR_MASK_INDEX[shift]);
1817
+ gen.SHR32ItoR (PCSX::ix86::ECX, 16 );
1818
+ gen.OR32RtoR (PCSX::ix86::EBX, PCSX::ix86::ECX);
1819
+ }
1820
+ };
1821
+
1822
+ if ((t & 0x1fe0 ) == 0 ) {
1823
+ iLWRk (addr & 3 , (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxM [addr & 0x1ffffc ]);
1841
1824
return ;
1842
1825
}
1843
1826
if (t == 0x1f80 && addr < 0x1f801000 ) {
1844
- gen.MOV32MtoR (PCSX::ix86::EAX, (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxH [addr & 0xffc ]);
1845
- iLWRk (addr & 3 );
1846
- gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1827
+ iLWRk (addr & 3 , (uint32_t )&PCSX::g_emulator.m_psxMem ->g_psxH [addr & 0xffc ]);
1847
1828
return ;
1848
1829
}
1849
- }
1850
-
1851
- if (IsConst (_Rs_))
1852
1830
gen.MOV32ItoR (PCSX::ix86::EAX, m_iRegs[_Rs_].k + _Imm_);
1853
- else {
1831
+ } else {
1854
1832
gen.MOV32MtoR (PCSX::ix86::EAX, (uint32_t )&m_psxRegs.GPR .r [_Rs_]);
1855
1833
if (_Imm_) gen.ADD32ItoR (PCSX::ix86::EAX, _Imm_);
1856
1834
}
@@ -1864,21 +1842,16 @@ void X86DynaRecCPU::recLWR() {
1864
1842
gen.POP32R (PCSX::ix86::EDX);
1865
1843
gen.AND32ItoR (PCSX::ix86::EDX, 0x3 ); // shift = addr & 3;
1866
1844
1867
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_LWR_SHIFT );
1845
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )LWR_SHIFT );
1868
1846
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
1869
- gen.SHR32CLtoR (PCSX::ix86::EAX); // mem(PCSX::ix86::EAX) >> g_LWR_SHIFT[shift]
1847
+ gen.SHR32CLtoR (PCSX::ix86::EAX); // mem(PCSX::ix86::EAX) << LWR_SHIFT[shift]
1848
+ gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1870
1849
1871
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_LWR_MASK );
1850
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )LWR_MASK_INDEX );
1872
1851
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
1873
-
1874
- if (IsConst (_Rt_)) {
1875
- gen.MOV32ItoR (PCSX::ix86::EDX, m_iRegs[_Rt_].k );
1876
- } else {
1877
- gen.MOV32MtoR (PCSX::ix86::EDX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
1878
- }
1879
- gen.AND32RtoR (PCSX::ix86::EDX, PCSX::ix86::ECX); // _rRt_ & g_LWR_MASK[shift]
1880
- gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::EDX);
1881
- gen.MOV32RtoR (PCSX::ix86::EDI, PCSX::ix86::EAX);
1852
+ gen.SHL32ItoR (PCSX::ix86::ECX, 16 );
1853
+ gen.AND32ItoR (PCSX::ix86::EBX, 0xffff );
1854
+ gen.OR32RtoR (PCSX::ix86::EBX, PCSX::ix86::ECX);
1882
1855
} else {
1883
1856
gen.ADD32ItoR (PCSX::ix86::ESP, 8 );
1884
1857
}
@@ -2085,8 +2058,8 @@ void X86DynaRecCPU::iSWLk(uint32_t shift) {
2085
2058
} else {
2086
2059
gen.MOV32MtoR (PCSX::ix86::ECX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
2087
2060
}
2088
- gen.SHR32ItoR (PCSX::ix86::ECX, g_SWL_SHIFT [shift]);
2089
- gen.AND32ItoR (PCSX::ix86::EAX, g_SWL_MASK [shift]);
2061
+ gen.SHR32ItoR (PCSX::ix86::ECX, SWL_SHIFT [shift]);
2062
+ gen.AND32ItoR (PCSX::ix86::EAX, SWL_MASK [shift]);
2090
2063
gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX);
2091
2064
}
2092
2065
@@ -2129,18 +2102,18 @@ void X86DynaRecCPU::recSWL() {
2129
2102
gen.POP32R (PCSX::ix86::EDX);
2130
2103
gen.AND32ItoR (PCSX::ix86::EDX, 0x3 ); // shift = addr & 3;
2131
2104
2132
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_SWL_MASK );
2105
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )SWL_MASK );
2133
2106
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
2134
- gen.AND32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX); // mem & g_SWL_MASK [shift]
2107
+ gen.AND32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX); // mem & SWL_MASK [shift]
2135
2108
2136
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_SWL_SHIFT );
2109
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )SWL_SHIFT );
2137
2110
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
2138
2111
if (IsConst (_Rt_)) {
2139
2112
gen.MOV32ItoR (PCSX::ix86::EDX, m_iRegs[_Rt_].k );
2140
2113
} else {
2141
2114
gen.MOV32MtoR (PCSX::ix86::EDX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
2142
2115
}
2143
- gen.SHR32CLtoR (PCSX::ix86::EDX); // _rRt_ >> g_SWL_SHIFT [shift]
2116
+ gen.SHR32CLtoR (PCSX::ix86::EDX); // _rRt_ >> SWL_SHIFT [shift]
2144
2117
2145
2118
gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::EDX);
2146
2119
gen.PUSH32R (PCSX::ix86::EAX);
@@ -2164,8 +2137,8 @@ void X86DynaRecCPU::iSWRk(uint32_t shift) {
2164
2137
} else {
2165
2138
gen.MOV32MtoR (PCSX::ix86::ECX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
2166
2139
}
2167
- gen.SHL32ItoR (PCSX::ix86::ECX, g_SWR_SHIFT [shift]);
2168
- gen.AND32ItoR (PCSX::ix86::EAX, g_SWR_MASK [shift]);
2140
+ gen.SHL32ItoR (PCSX::ix86::ECX, SWR_SHIFT [shift]);
2141
+ gen.AND32ItoR (PCSX::ix86::EAX, SWR_MASK [shift]);
2169
2142
gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX);
2170
2143
}
2171
2144
@@ -2208,18 +2181,18 @@ void X86DynaRecCPU::recSWR() {
2208
2181
gen.POP32R (PCSX::ix86::EDX);
2209
2182
gen.AND32ItoR (PCSX::ix86::EDX, 0x3 ); // shift = addr & 3;
2210
2183
2211
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_SWR_MASK );
2184
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )SWR_MASK );
2212
2185
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
2213
- gen.AND32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX); // mem & g_SWR_MASK [shift]
2186
+ gen.AND32RtoR (PCSX::ix86::EAX, PCSX::ix86::ECX); // mem & SWR_MASK [shift]
2214
2187
2215
- gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )g_SWR_SHIFT );
2188
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )SWR_SHIFT );
2216
2189
gen.MOV32RmStoR (PCSX::ix86::ECX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
2217
2190
if (IsConst (_Rt_)) {
2218
2191
gen.MOV32ItoR (PCSX::ix86::EDX, m_iRegs[_Rt_].k );
2219
2192
} else {
2220
2193
gen.MOV32MtoR (PCSX::ix86::EDX, (uint32_t )&m_psxRegs.GPR .r [_Rt_]);
2221
2194
}
2222
- gen.SHL32CLtoR (PCSX::ix86::EDX); // _rRt_ << g_SWR_SHIFT [shift]
2195
+ gen.SHL32CLtoR (PCSX::ix86::EDX); // _rRt_ << SWR_SHIFT [shift]
2223
2196
2224
2197
gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::EDX);
2225
2198
gen.PUSH32R (PCSX::ix86::EAX);
@@ -3062,13 +3035,47 @@ void X86DynaRecCPU::recRecompile() {
3062
3035
unsigned count = 0 ;
3063
3036
gen.PUSH32R (PCSX::ix86::EBP);
3064
3037
gen.PUSH32R (PCSX::ix86::EBX);
3038
+ gen.XOR32RtoR (PCSX::ix86::EBX, PCSX::ix86::EBX);
3065
3039
gen.PUSH32R (PCSX::ix86::ESI);
3066
3040
gen.PUSH32R (PCSX::ix86::EDI);
3067
3041
int8_t *endStackFramePtr = gen.x86GetPtr ();
3068
3042
3069
- while (
3070
- ((count < DYNAREC_BLOCK || m_delayedLoadInfo[0 ].active || m_delayedLoadInfo[1 ].active ) && !m_stopRecompile) ||
3071
- m_nextIsDelaySlot) {
3043
+ auto shouldContinue = [&]() {
3044
+ if (m_nextIsDelaySlot) {
3045
+ return true ;
3046
+ }
3047
+ if (m_stopRecompile) {
3048
+ return false ;
3049
+ }
3050
+ if (count >= DYNAREC_BLOCK && !m_delayedLoadInfo[0 ].active && !m_delayedLoadInfo[1 ].active ) {
3051
+ return false ;
3052
+ }
3053
+ return true ;
3054
+ };
3055
+
3056
+ auto processDelayedLoad = [&]() {
3057
+ m_currentDelayedLoad ^= 1 ;
3058
+ auto &delayedLoad = m_delayedLoadInfo[m_currentDelayedLoad];
3059
+ if (delayedLoad.active ) {
3060
+ delayedLoad.active = false ;
3061
+ const unsigned index = delayedLoad.index ;
3062
+ gen.MOV32RtoR (PCSX::ix86::EDX, PCSX::ix86::EBX);
3063
+ gen.AND32ItoR (PCSX::ix86::EDX, 0xffff );
3064
+ gen.MOV32ItoR (PCSX::ix86::ECX, (uint32_t )MASKS);
3065
+ gen.MOV32RmStoR (PCSX::ix86::EAX, PCSX::ix86::ECX, PCSX::ix86::EDX, 2 );
3066
+ if (IsConst (index)) {
3067
+ gen.AND32ItoR (PCSX::ix86::EAX, m_iRegs[index].k );
3068
+ gen.OR32RtoR (PCSX::ix86::EAX, PCSX::ix86::ESI);
3069
+ gen.MOV32RtoM ((uint32_t )&m_psxRegs.GPR .r [index], PCSX::ix86::EAX);
3070
+ m_iRegs[index].state = ST_UNK;
3071
+ } else {
3072
+ gen.AND32RtoM ((uint32_t )&m_psxRegs.GPR .r [index], PCSX::ix86::EAX);
3073
+ gen.OR32RtoM ((uint32_t )&m_psxRegs.GPR .r [index], PCSX::ix86::ESI);
3074
+ }
3075
+ }
3076
+ };
3077
+
3078
+ while (shouldContinue ()) {
3072
3079
if (m_nextIsDelaySlot) {
3073
3080
m_inDelaySlot = true ;
3074
3081
m_nextIsDelaySlot = false ;
@@ -3085,28 +3092,18 @@ void X86DynaRecCPU::recRecompile() {
3085
3092
(*this .*func)();
3086
3093
3087
3094
const bool isOtherActive = m_delayedLoadInfo[m_currentDelayedLoad].active ;
3088
- m_currentDelayedLoad ^= 1 ;
3089
- auto &delayedLoad = m_delayedLoadInfo[m_currentDelayedLoad];
3090
- if (delayedLoad.active ) {
3091
- delayedLoad.active = false ;
3092
- const unsigned index = delayedLoad.index ;
3093
- gen.MOV32RtoM ((uint32_t )&m_psxRegs.GPR .r [index], PCSX::ix86::ESI);
3094
- m_iRegs[index].state = ST_UNK;
3095
+ processDelayedLoad ();
3096
+ if (isOtherActive) {
3097
+ gen.MOV32RtoR (PCSX::ix86::ESI, PCSX::ix86::EDI);
3098
+ gen.SHR32ItoR (PCSX::ix86::EBX, 16 );
3095
3099
}
3096
- if (isOtherActive) gen.MOV32RtoR (PCSX::ix86::ESI, PCSX::ix86::EDI);
3097
3100
}
3098
3101
3099
3102
// This is slightly inexact: if there's a delayed load in the delay slot of a branch,
3100
3103
// then we're flushing it early, before the next instruction had a chance to execute.
3101
3104
// This might be fine still, but it can be arranged if needed.
3102
- m_currentDelayedLoad ^= 1 ;
3103
- auto &delayedLoad = m_delayedLoadInfo[m_currentDelayedLoad];
3104
- if (delayedLoad.active ) {
3105
- delayedLoad.active = false ;
3106
- const unsigned index = delayedLoad.index ;
3107
- gen.MOV32RtoM ((uint32_t )&m_psxRegs.GPR .r [index], PCSX::ix86::ESI);
3108
- m_iRegs[index].state = ST_UNK;
3109
- }
3105
+ processDelayedLoad ();
3106
+
3110
3107
iFlushRegs ();
3111
3108
3112
3109
count = ((m_pc - old_pc) / 4 ) * PCSX::Emulator::BIAS;
@@ -3126,6 +3123,7 @@ void X86DynaRecCPU::recRecompile() {
3126
3123
gen.RET ();
3127
3124
} else {
3128
3125
ptrdiff_t count = endStackFramePtr - startPtr;
3126
+ (*(uint32_t *)PC_REC (old_pc)) = (uint32_t )endStackFramePtr;
3129
3127
gen.NOP (count, startPtr);
3130
3128
gen.RET ();
3131
3129
}
0 commit comments