// 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 "instrs.h" #include "arch_i.h" IMPL_COND(mov); IMPL_COND(lea); IMPL_COND(xchg); IMPL_COND(cmpxchg); // // Movement instructions // IMPL_START_2(mov) { v1 = v2; } IMPL_OUT; IMPL_START_2(xchg) { ulong t = v1; v1 = v2; v2 = t; } IMPL_OUT; IMPL_START_1(lea) { v1 = (p2->type == A_REG ? R(p2->val) : p2->val) + p2->off; } IMPL_OUT; IMPL_START_1(gcs) { v1 = cr1; } IMPL_OUT; IMPL_START_2(cmpxchg) { if (rax == v1) { flg |= ZF; v1 = v2; } else { flg &= ~ZF; rax = v1; } } IMPL_OUT;