Add x86-64 encodings for call instructions.

This commit is contained in:
Jakob Stoklund Olesen
2017-09-12 13:32:04 -07:00
parent f5639a66e6
commit 5845f56cda
2 changed files with 15 additions and 0 deletions

View File

@@ -418,6 +418,16 @@ ebb0:
; asm: movzbq %dl, %rsi ; asm: movzbq %dl, %rsi
[-,%rsi] v351 = bint.i64 v301 ; bin: 48 0f b6 f2 [-,%rsi] v351 = bint.i64 v301 ; bin: 48 0f b6 f2
; asm: call foo
call fn0() ; bin: e8 PCRel4(fn0) 00000000
; asm: call *%rcx
call_indirect sig0, v1() ; bin: 40 ff d1
; asm: call *%rsi
call_indirect sig0, v2() ; bin: 40 ff d6
; asm: call *%r10
call_indirect sig0, v3() ; bin: 41 ff d2
; asm: testq %rcx, %rcx ; asm: testq %rcx, %rcx
; asm: je ebb1 ; asm: je ebb1
brz v1, ebb1 ; bin: 48 85 c9 74 1b brz v1, ebb1 ; bin: 48 85 c9 74 1b

View File

@@ -225,7 +225,12 @@ enc_i32_i64_ld_st(base.sload8, True, r.ldDisp32, 0x0f, 0xbe)
# Call/return # Call/return
# #
I32.enc(base.call, *r.call_id(0xe8)) I32.enc(base.call, *r.call_id(0xe8))
I64.enc(base.call, *r.call_id(0xe8))
I32.enc(base.call_indirect.i32, *r.call_r(0xff, rrr=2)) I32.enc(base.call_indirect.i32, *r.call_r(0xff, rrr=2))
I64.enc(base.call_indirect.i64, *r.call_r.rex(0xff, rrr=2))
I64.enc(base.call_indirect.i64, *r.call_r(0xff, rrr=2))
I32.enc(base.x_return, *r.ret(0xc3)) I32.enc(base.x_return, *r.ret(0xc3))
I64.enc(base.x_return, *r.ret(0xc3)) I64.enc(base.x_return, *r.ret(0xc3))