diff options
author | Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> | 2020-09-28 15:50:41 -0400 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:24 -0400 |
commit | e0c5d4ecd9e864fa531ecceb29ed0e195bf08644 (patch) | |
tree | 3a4b5d791a58ed235729cc9a9ea7d2dd00a5ab74 /ujit_asm.h | |
parent | 4d72b9a2f7890a36f221f256b62250df4baebc1a (diff) |
Implemented side-exits to interpreter. setlocal_WC_0
Diffstat (limited to 'ujit_asm.h')
-rw-r--r-- | ujit_asm.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/ujit_asm.h b/ujit_asm.h index d594897fa0..707c56cb2a 100644 --- a/ujit_asm.h +++ b/ujit_asm.h @@ -219,7 +219,8 @@ x86opnd_t imm_opnd(int64_t val); x86opnd_t const_ptr_opnd(void* ptr); // Code block methods -void cb_init(codeblock_t* cb, size_t mem_size); +uint8_t* alloc_exec_mem(size_t mem_size); +void cb_init(codeblock_t* cb, uint8_t* mem_block, size_t mem_size); void cb_align_pos(codeblock_t* cb, size_t multiple); void cb_set_pos(codeblock_t* cb, size_t pos); uint8_t* cb_get_ptr(codeblock_t* cb, size_t index); @@ -289,7 +290,7 @@ void jnc(codeblock_t* cb, size_t label_idx); void jne(codeblock_t* cb, size_t label_idx); void jng(codeblock_t* cb, size_t label_idx); void jnge(codeblock_t* cb, size_t label_idx); -//void jnl(codeblock_t* cb, size_t label_idx); +void jnl(codeblock_t* cb, size_t label_idx); void jnle(codeblock_t* cb, size_t label_idx); void jno(codeblock_t* cb, size_t label_idx); void jnp(codeblock_t* cb, size_t label_idx); @@ -301,6 +302,36 @@ void jpe(codeblock_t* cb, size_t label_idx); void jpo(codeblock_t* cb, size_t label_idx); void js(codeblock_t* cb, size_t label_idx); void jz(codeblock_t* cb, size_t label_idx); +void ja_ptr(codeblock_t* cb, uint8_t* ptr); +void jae_ptr(codeblock_t* cb, uint8_t* ptr); +void jb_ptr(codeblock_t* cb, uint8_t* ptr); +void jbe_ptr(codeblock_t* cb, uint8_t* ptr); +void jc_ptr(codeblock_t* cb, uint8_t* ptr); +void je_ptr(codeblock_t* cb, uint8_t* ptr); +void jg_ptr(codeblock_t* cb, uint8_t* ptr); +void jge_ptr(codeblock_t* cb, uint8_t* ptr); +void jl_ptr(codeblock_t* cb, uint8_t* ptr); +void jle_ptr(codeblock_t* cb, uint8_t* ptr); +void jna_ptr(codeblock_t* cb, uint8_t* ptr); +void jnae_ptr(codeblock_t* cb, uint8_t* ptr); +void jnb_ptr(codeblock_t* cb, uint8_t* ptr); +void jnbe_ptr(codeblock_t* cb, uint8_t* ptr); +void jnc_ptr(codeblock_t* cb, uint8_t* ptr); +void jne_ptr(codeblock_t* cb, uint8_t* ptr); +void jng_ptr(codeblock_t* cb, uint8_t* ptr); +void jnge_ptr(codeblock_t* cb, uint8_t* ptr); +void jnl_ptr(codeblock_t* cb, uint8_t* ptr); +void jnle_ptr(codeblock_t* cb, uint8_t* ptr); +void jno_ptr(codeblock_t* cb, uint8_t* ptr); +void jnp_ptr(codeblock_t* cb, uint8_t* ptr); +void jns_ptr(codeblock_t* cb, uint8_t* ptr); +void jnz_ptr(codeblock_t* cb, uint8_t* ptr); +void jo_ptr(codeblock_t* cb, uint8_t* ptr); +void jp_ptr(codeblock_t* cb, uint8_t* ptr); +void jpe_ptr(codeblock_t* cb, uint8_t* ptr); +void jpo_ptr(codeblock_t* cb, uint8_t* ptr); +void js_ptr(codeblock_t* cb, uint8_t* ptr); +void jz_ptr(codeblock_t* cb, uint8_t* ptr); void jmp(codeblock_t* cb, size_t label_idx); void jmp_rm(codeblock_t* cb, x86opnd_t opnd); void jmp32(codeblock_t* cb, int32_t offset); @@ -321,6 +352,7 @@ void sar(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1); void shl(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1); void shr(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1); void sub(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1); +void test(codeblock_t* cb, x86opnd_t rm_opnd, x86opnd_t imm_opnd); void ud2(codeblock_t* cb); void xor(codeblock_t* cb, x86opnd_t opnd0, x86opnd_t opnd1); |