aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George2018-10-01 12:34:36 +1000
committerDamien George2018-10-01 12:34:36 +1000
commit5b19916d6e953b5c5a6eb03afaf7f8e59e35baee (patch)
treecd44822cda58926e7bad0d05a56dab88a41f969f
parent1dc720dc01741067aeb417ba91937214e2afd137 (diff)
py/asmx64: Extend asm_x64_mov_reg_pcrel to accept high registers.
-rw-r--r--py/asmx64.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/py/asmx64.c b/py/asmx64.c
index 3e0aa4970..34487056c 100644
--- a/py/asmx64.c
+++ b/py/asmx64.c
@@ -579,10 +579,9 @@ void asm_x64_mov_local_addr_to_r64(asm_x64_t *as, int local_num, int dest_r64) {
}
void asm_x64_mov_reg_pcrel(asm_x64_t *as, int dest_r64, mp_uint_t label) {
- assert(dest_r64 < 8);
mp_uint_t dest = get_label_dest(as, label);
mp_int_t rel = dest - (as->base.code_offset + 7);
- asm_x64_write_byte_3(as, REX_PREFIX | REX_W, OPCODE_LEA_MEM_TO_R64, MODRM_R64(dest_r64) | MODRM_RM_R64(5));
+ asm_x64_write_byte_3(as, REX_PREFIX | REX_W | REX_R_FROM_R64(dest_r64), OPCODE_LEA_MEM_TO_R64, MODRM_R64(dest_r64) | MODRM_RM_R64(5));
asm_x64_write_word32(as, rel);
}