fcml 1.3.0
Loading...
Searching...
No Matches
fcml_optimizers.h
Go to the documentation of this file.
1/*
2 * FCML - Free Code Manipulation Library.
3 * Copyright (C) 2010-2024 Slawomir Wojtasiak
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
27#ifndef FCML_OPTIMIZERS_H_
28#define FCML_OPTIMIZERS_H_
29
30#include "fcml_lib_export.h"
31
32#include "fcml_types.h"
33#include "fcml_errors.h"
34#include "fcml_common.h"
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
50
84
92
105 fcml_fnp_asm_optimizer_callback callback, fcml_ptr args);
106
107/* Optimizers flags that can be used to configure optimization process. */
108#define FCML_OPTF_ASA_16 0x01
109#define FCML_OPTF_ASA_32 0x02
110#define FCML_OPTF_ASA_64 0x03
111#define FCML_OPTF_OSA_16 0x10
112#define FCML_OPTF_OSA_32 0x20
113#define FCML_OPTF_OSA_64 0x30
114/* Do not choose the optimal form, but return all possibilities. */
115#define FCML_OPTF_ALL_FORMS 0xFF
116
131 fcml_fnp_asm_optimizer_callback callback, fcml_ptr callback_args);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif /* FCML_OPTIMIZERS_H_ */
Definitions of common structures used by FCML components.
Global error handling related declarations.
fcml_uint16_t fcml_ceh_error
All error codes should be held in variables of this type.
Definition fcml_errors.h:156
Handles Win32 DLL symbols importing/exporting.
LIB_EXPORT fcml_ceh_error LIB_CALL fcml_fn_asm_default_optimizer(fcml_st_asm_optimizer_context *context, fcml_st_asm_optimizer_processing_details *ds_flags, fcml_fnp_asm_optimizer_callback callback, fcml_ptr callback_args)
Default optimizer implementation.
fcml_ceh_error(* fcml_fnp_asm_optimizer_callback)(fcml_ptr args)
Callback used to invoke encoding process for given processing details configuration.
Definition fcml_optimizers.h:91
struct fcml_st_asm_optimizer_processing_details fcml_st_asm_optimizer_processing_details
Processing details for optimizers.
struct fcml_st_asm_optimizer_context fcml_st_asm_optimizer_context
Optimizer context used as a connector with the environment.
fcml_ceh_error(LIB_CALL * fcml_fnp_asm_optimizer)(fcml_st_asm_optimizer_context *context, fcml_st_asm_optimizer_processing_details *ds_flags, fcml_fnp_asm_optimizer_callback callback, fcml_ptr args)
Function pointer declaration for optimizers.
Definition fcml_optimizers.h:102
Types declarations.
Optimizer context used as a connector with the environment.
Definition fcml_optimizers.h:41
const fcml_st_entry_point * entry_point
Instruction's entry point provided by the caller.
Definition fcml_optimizers.h:44
fcml_uint16_t optimizer_flags
Optimizer flags passed through the assembler context.
Definition fcml_optimizers.h:48
Processing details for optimizers.
Definition fcml_optimizers.h:52
fcml_usize eosa
Effective operand size attribute chosen for currently processed instruction form.
Definition fcml_optimizers.h:78
fcml_bool break_optimization
Set to true in order to break optimization process immediately.
Definition fcml_optimizers.h:82
fcml_st_nullable_size_flags allowed_eosa
Allowed values of the operand size attribute calculated by the assembler engine.
Definition fcml_optimizers.h:57
fcml_usize vector_length
Vector length of AVX instructions.
Definition fcml_optimizers.h:80
fcml_usize easa
Effective address size attribute chosen for currently processed instruction form.
Definition fcml_optimizers.h:70
fcml_st_nullable_size_flags allowed_easa
Allowed values of the address size attribute calculated by the assembler engine.
Definition fcml_optimizers.h:62
Describes the execution context for the instruction being assembled.
Definition fcml_common.h:838
Nullable wrapper for mask of size flags.
Definition fcml_common.h:528