Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint32_t *EMIT_moveq(uint32_t *ptr, uint16_t **m68k_ptr)
- {
- uint16_t opcode = BE16((*m68k_ptr)[0]);
- int8_t value = opcode & 0xff;
- uint8_t reg = (opcode >> 9) & 7;
- uint8_t tmp_reg = RA_MapM68kRegisterForWrite(&ptr, reg);
- (*m68k_ptr)++;
- *ptr++ = movs_immed_s8(tmp_reg, value);
- ptr = EMIT_AdvancePC(ptr, 2);
- uint8_t mask = M68K_GetSRMask(BE16((*m68k_ptr)[0]));
- uint8_t update_mask = (SR_C | SR_V | SR_Z | SR_N) & ~mask;
- if (update_mask)
- {
- *ptr++ = bic_immed(REG_SR, REG_SR, update_mask);
- if (update_mask & SR_N)
- *ptr++ = orr_cc_immed(ARM_CC_MI, REG_SR, REG_SR, SR_N);
- if (update_mask & SR_Z)
- *ptr++ = orr_cc_immed(ARM_CC_EQ, REG_SR, REG_SR, SR_Z);
- }
- return ptr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement