// 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(jmp); IMPL_COND(loop); // // Jump instructions // IMPL_START_1(jmp) { JUMP(v1); } IMPL_END; IMPL_START_1(loop) { if (ctx->r[RCX].val > 0) { ctx->r[RCX].val--; JUMP(v1); } } IMPL_END; IMPL_START_1(cjmpa) { if (!(ctx->r[FLG].val & ZF) && !(ctx->r[FLG].val & CF)) JUMP(v1); } IMPL_END; IMPL_START_1(cjmpae) { if (!(ctx->r[FLG].val & CF)) JUMP(v1); } IMPL_END; IMPL_START_1(cjmpb) { if (!(ctx->r[FLG].val & ZF) && ctx->r[FLG].val & CF) JUMP(v1); } IMPL_END; IMPL_START_1(cjmpbe) { if (ctx->r[FLG].val & CF) JUMP(v1); } IMPL_END; IMPL_START_1(jcxz) { if (!ctx->r[RCX].val) JUMP(v1); } IMPL_END; IMPL_START_1(jcxnz) { if (ctx->r[RCX].val) JUMP(v1); } IMPL_END;