summaryrefslogtreecommitdiff
path: root/ujit_asm.h
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2020-09-30 16:57:54 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:24 -0400
commit851ea463512529390133e656540bb3e287ca6fdd (patch)
treec7d26b38389bc47a8ee31e3e0e8f4dc996283586 /ujit_asm.h
parentd7f012666d4931c64fbb6175eab3837088e4f0ea (diff)
Added member_opnd() convenience macro
Diffstat (limited to 'ujit_asm.h')
-rw-r--r--ujit_asm.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/ujit_asm.h b/ujit_asm.h
index 8bb408f9f1..810b4d35b7 100644
--- a/ujit_asm.h
+++ b/ujit_asm.h
@@ -218,6 +218,13 @@ x86opnd_t imm_opnd(int64_t val);
// Constant pointer operand
x86opnd_t const_ptr_opnd(void* ptr);
+// Struct member operand
+#define member_opnd(base_reg, struct_type, member_name) mem_opnd( \
+ 8 * sizeof(((struct_type*)0)->member_name), \
+ base_reg, \
+ offsetof(struct_type, member_name) \
+)
+
// Code block methods
uint8_t* alloc_exec_mem(size_t mem_size);
void cb_init(codeblock_t* cb, uint8_t* mem_block, size_t mem_size);