// The OS/K Team licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #include IMPL_START_1(lea) { v1 = p2->addr; } IMPL_OUT; //----------------------------------------------------------------------------// IMPL_START_2(mov) { v1 = v2; } IMPL_OUT; IMPL_START_1(movzx) { DECVZX(v2, p2); v1 = v2; } IMPL_OUT; //----------------------------------------------------------------------------// IMPL_START_2(xchg) { ulong t = v1; v1 = v2; v2 = t; } IMPL_OUT_2; IMPL_START_2(cmpxchg) { if (rax == v1) { flg |= ZF; v1 = v2; } else { flg &= ~ZF; rax = v1; } } IMPL_OUT; //----------------------------------------------------------------------------// IMPL_START_2(ldarg) { if (v2 < 8) v1 = R(AX0 + v2); else if (v2 < 16) v1 = R(LX0 + v2 - 8); else _except(ctx, E_ILL, "ldarg: value out of range: %lu", v1); } IMPL_OUT; //----------------------------------------------------------------------------// IMPL_START_1(gco) { v1 = cr1; } IMPL_OUT; IMPL_START_1(gcd) { v1 = cr2; } IMPL_OUT; //----------------------------------------------------------------------------//