MicrOS
mod_rm_parsing.h
Go to the documentation of this file.
1 #ifndef V8086_MOD_RM_PARSING_H
2 #define V8086_MOD_RM_PARSING_H
3 
4 #include "v8086.h"
5 
6 #define get_byte_register(machine, reg_field) ((uint8_t*)(&(machine->regs.h.al) + ((((reg_field) & 3) << 2) + ((reg_field) >> 2))))
7 #define get_word_register(machine, reg_field) ((uint16_t*)(&(machine->regs.d.eax) + (reg_field)))
8 #define get_dword_register(machine, reg_field) ((uint32_t*)(&(machine->regs.d.eax) + (reg_field)))
9 
10 /*uint8_t* get_byte_register(v8086* machine, uint8_t reg_field);
11 uint16_t* get_word_register(v8086* machine, uint8_t reg_field);
12 uint32_t* get_dword_register(v8086* machine, uint8_t reg_field);*/
13 void* get_variable_length_register(v8086* machine, uint8_t reg_field, uint8_t width);
14 
15 #define select_segment_register(machine, select) ((uint16_t*)(&((machine)->sregs.es) + (select)))
16 
17 //uint16_t* select_segment_register(v8086* machine, segment_register_select select);
18 int16_t calculate_segment_offset_from_mode(v8086* machine, uint8_t mod_rm, uint16_t* segment, uint32_t* offset);
19 int16_t calculate_segment_offset_from_mode_32(v8086* machine, uint8_t mod_rm, uint16_t* segment, uint32_t* offset);
20 void* get_memory_from_mode(v8086* machine, uint8_t mod_rm, uint8_t width);
21 
22 #endif //V8086_MOD_RM_PARSING_H
void * get_variable_length_register(v8086 *machine, uint8_t reg_field, uint8_t width)
Definition: mod_rm_parsing.c:5
int16_t calculate_segment_offset_from_mode(v8086 *machine, uint8_t mod_rm, uint16_t *segment, uint32_t *offset)
Definition: mod_rm_parsing.c:21
v8086 * machine
Definition: vbe.c:8
void * get_memory_from_mode(v8086 *machine, uint8_t mod_rm, uint8_t width)
Definition: mod_rm_parsing.c:378
Definition: v8086.h:155
int16_t calculate_segment_offset_from_mode_32(v8086 *machine, uint8_t mod_rm, uint16_t *segment, uint32_t *offset)
Definition: mod_rm_parsing.c:243
size_t uint32_t
Unsigned integral type.
Definition: string.h:8