infix
A JIT-Powered FFI Library for C
|
Declares internal helper functions for emitting x86-64 machine code. More...
Go to the source code of this file.
Functions | |
void | emit_mov_reg_imm64 (code_buffer *buf, x64_gpr reg, uint64_t value) |
void | emit_mov_reg_imm32 (code_buffer *buf, x64_gpr reg, int32_t imm) |
void | emit_mov_reg_reg (code_buffer *buf, x64_gpr dest, x64_gpr src) |
void | emit_mov_reg_mem (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_mov_reg32_mem (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_movsxd_reg_mem (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_movsx_reg64_mem8 (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_movsx_reg64_mem16 (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_movzx_reg64_mem8 (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_movzx_reg64_mem16 (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_mov_mem_reg (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_gpr src) |
void | emit_mov_mem_reg32 (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_gpr src) |
void | emit_mov_mem_reg16 (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_gpr src) |
void | emit_mov_mem_reg8 (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_gpr src) |
void | emit_movss_xmm_mem (code_buffer *buf, x64_xmm dest, x64_gpr src_base, int32_t offset) |
void | emit_movss_mem_xmm (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_xmm src) |
void | emit_movsd_xmm_mem (code_buffer *buf, x64_xmm dest, x64_gpr src_base, int32_t offset) |
void | emit_movsd_mem_xmm (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_xmm src) |
void | emit_movups_xmm_mem (code_buffer *buf, x64_xmm dest, x64_gpr src_base, int32_t offset) |
void | emit_movups_mem_xmm (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_xmm src) |
void | emit_vmovupd_ymm_mem (code_buffer *buf, x64_xmm dest, x64_gpr src_base, int32_t offset) |
void | emit_vmovupd_mem_ymm (code_buffer *buf, x64_gpr dest_base, int32_t offset, x64_xmm src) |
void | emit_movq_xmm_gpr (code_buffer *buf, x64_xmm dest, x64_gpr src) |
void | emit_movq_gpr_xmm (code_buffer *buf, x64_gpr dest, x64_xmm src) |
void | emit_fldt_mem (code_buffer *buf, x64_gpr base, int32_t offset) |
void | emit_fstpt_mem (code_buffer *buf, x64_gpr base, int32_t offset) |
void | emit_lea_reg_mem (code_buffer *buf, x64_gpr dest, x64_gpr src_base, int32_t offset) |
void | emit_add_reg_imm8 (code_buffer *buf, x64_gpr reg, int8_t imm) |
void | emit_add_reg_imm32 (code_buffer *buf, x64_gpr reg, int32_t imm) |
void | emit_sub_reg_imm32 (code_buffer *buf, x64_gpr reg, int32_t imm) |
void | emit_dec_reg (code_buffer *buf, x64_gpr reg) |
void | emit_push_reg (code_buffer *buf, x64_gpr reg) |
void | emit_pop_reg (code_buffer *buf, x64_gpr reg) |
void | emit_call_reg (code_buffer *buf, x64_gpr reg) |
void | emit_ret (code_buffer *buf) |
void | emit_test_reg_reg (code_buffer *buf, x64_gpr reg1, x64_gpr reg2) |
void | emit_jnz_short (code_buffer *buf, int8_t offset) |
void | emit_jmp_reg (code_buffer *buf, x64_gpr reg) |
void | emit_ud2 (code_buffer *buf) |
void | emit_modrm (code_buffer *buf, uint8_t mod, uint8_t reg_opcode, uint8_t rm) |
void | emit_rex_prefix (code_buffer *buf, bool w, bool r, bool x, bool b) |
Declares internal helper functions for emitting x86-64 machine code.
Copyright (c) 2025 Sanko Robinson
This source code is dual-licensed under the Artistic License 2.0 or the MIT License. You may choose to use this code under the terms of either license.
SPDX-License-Identifier: (Artistic-2.0 OR MIT)
The documentation blocks within this file are licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0).
SPDX-License-Identifier: CC-BY-4.0
void emit_add_reg_imm32 | ( | code_buffer * | buf, |
x64_gpr | reg, | ||
int32_t | imm | ||
) |
void emit_add_reg_imm8 | ( | code_buffer * | buf, |
x64_gpr | reg, | ||
int8_t | imm | ||
) |
void emit_call_reg | ( | code_buffer * | buf, |
x64_gpr | reg | ||
) |
void emit_dec_reg | ( | code_buffer * | buf, |
x64_gpr | reg | ||
) |
void emit_fldt_mem | ( | code_buffer * | buf, |
x64_gpr | base, | ||
int32_t | offset | ||
) |
void emit_fstpt_mem | ( | code_buffer * | buf, |
x64_gpr | base, | ||
int32_t | offset | ||
) |
void emit_jmp_reg | ( | code_buffer * | buf, |
x64_gpr | reg | ||
) |
Emits a jmp r64
instruction. This instruction performs an indirect jump to the address contained in the specified 64-bit register. Opcode format: [REX.B] FF /4
void emit_jnz_short | ( | code_buffer * | buf, |
int8_t | offset | ||
) |
void emit_lea_reg_mem | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_modrm | ( | code_buffer * | buf, |
uint8_t | mod, | ||
uint8_t | reg_opcode, | ||
uint8_t | rm | ||
) |
void emit_mov_mem_reg | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_gpr | src | ||
) |
void emit_mov_mem_reg16 | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_gpr | src | ||
) |
void emit_mov_mem_reg32 | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_gpr | src | ||
) |
void emit_mov_mem_reg8 | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_gpr | src | ||
) |
void emit_mov_reg32_mem | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_mov_reg_imm32 | ( | code_buffer * | buf, |
x64_gpr | reg, | ||
int32_t | imm | ||
) |
void emit_mov_reg_imm64 | ( | code_buffer * | buf, |
x64_gpr | reg, | ||
uint64_t | value | ||
) |
void emit_mov_reg_mem | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_mov_reg_reg | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src | ||
) |
void emit_movq_gpr_xmm | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_xmm | src | ||
) |
void emit_movq_xmm_gpr | ( | code_buffer * | buf, |
x64_xmm | dest, | ||
x64_gpr | src | ||
) |
void emit_movsd_mem_xmm | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_xmm | src | ||
) |
void emit_movsd_xmm_mem | ( | code_buffer * | buf, |
x64_xmm | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movss_mem_xmm | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_xmm | src | ||
) |
void emit_movss_xmm_mem | ( | code_buffer * | buf, |
x64_xmm | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movsx_reg64_mem16 | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movsx_reg64_mem8 | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movsxd_reg_mem | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movups_mem_xmm | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_xmm | src | ||
) |
void emit_movups_xmm_mem | ( | code_buffer * | buf, |
x64_xmm | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movzx_reg64_mem16 | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_movzx_reg64_mem8 | ( | code_buffer * | buf, |
x64_gpr | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |
void emit_pop_reg | ( | code_buffer * | buf, |
x64_gpr | reg | ||
) |
void emit_push_reg | ( | code_buffer * | buf, |
x64_gpr | reg | ||
) |
void emit_ret | ( | code_buffer * | buf | ) |
void emit_rex_prefix | ( | code_buffer * | buf, |
bool | w, | ||
bool | r, | ||
bool | x, | ||
bool | b | ||
) |
void emit_sub_reg_imm32 | ( | code_buffer * | buf, |
x64_gpr | reg, | ||
int32_t | imm | ||
) |
void emit_test_reg_reg | ( | code_buffer * | buf, |
x64_gpr | reg1, | ||
x64_gpr | reg2 | ||
) |
void emit_ud2 | ( | code_buffer * | buf | ) |
void emit_vmovupd_mem_ymm | ( | code_buffer * | buf, |
x64_gpr | dest_base, | ||
int32_t | offset, | ||
x64_xmm | src | ||
) |
void emit_vmovupd_ymm_mem | ( | code_buffer * | buf, |
x64_xmm | dest, | ||
x64_gpr | src_base, | ||
int32_t | offset | ||
) |