IDA SDK
Macros
Processor feature bits

Detailed Description

Used by processor_t::flag.

Macros

#define PR_SEGS   0x000001
 has segment registers?
 
#define PR_USE32   0x000002
 supports 32-bit addressing?
 
#define PR_DEFSEG32   0x000004
 segments are 32-bit by default
 
#define PR_RNAMESOK   0x000008
 allow user register names for location names
 
#define PR_ADJSEGS   0x000020
 IDA may adjust segments' starting/ending addresses.
 
#define PR_DEFNUM   0x0000C0
 mask - default number representation
 
#define PRN_HEX   0x000000
 hex
 
#define PRN_OCT   0x000040
 octal
 
#define PRN_DEC   0x000080
 decimal
 
#define PRN_BIN   0x0000C0
 binary
 
#define PR_WORD_INS   0x000100
 instruction codes are grouped 2bytes in binary line prefix
 
#define PR_NOCHANGE   0x000200
 The user can't change segments and code/data attributes. More...
 
#define PR_ASSEMBLE   0x000400
 Module has a built-in assembler and will react to ev_assemble.
 
#define PR_ALIGN   0x000800
 All data items should be aligned properly.
 
#define PR_TYPEINFO   0x001000
 the processor module supports type information callbacks More...
 
#define PR_USE64   0x002000
 supports 64-bit addressing?
 
#define PR_SGROTHER   0x004000
 the segment registers don't contain the segment selectors.
 
#define PR_STACK_UP   0x008000
 the stack grows up
 
#define PR_BINMEM   0x010000
 the processor module provides correct segmentation for binary files More...
 
#define PR_SEGTRANS   0x020000
 the processor module supports the segment translation feature More...
 
#define PR_CHK_XREF   0x040000
 don't allow near xrefs between segments with different bases
 
#define PR_NO_SEGMOVE   0x080000
 the processor module doesn't support move_segm() More...
 
#define PR_USE_ARG_TYPES   0x200000
 use processor_t::use_arg_types callback
 
#define PR_SCALE_STKVARS   0x400000
 use processor_t::get_stkvar_scale callback
 
#define PR_DELAYED   0x800000
 has delayed jumps and calls More...
 
#define PR_ALIGN_INSN   0x1000000
 allow ida to create alignment instructions arbitrarily. More...
 
#define PR_PURGING   0x2000000
 there are calling conventions which may purge bytes from the stack
 
#define PR_CNDINSNS   0x4000000
 has conditional instructions
 
#define PR_USE_TBYTE   0x8000000
 BTMT_SPECFLT means _TBYTE type
 
#define PR_DEFSEG64   0x10000000
 segments are 64-bit by default
 
#define PR_OUTER   0x20000000
 has outer operands (currently only mc68k)
 

Macro Definition Documentation

#define PR_NOCHANGE   0x000200

The user can't change segments and code/data attributes.

(display only)

#define PR_TYPEINFO   0x001000

the processor module supports type information callbacks

ALL OF THEM SHOULD BE IMPLEMENTED!

#define PR_BINMEM   0x010000

the processor module provides correct segmentation for binary files

(i.e. it creates additional segments) The kernel will not ask the user to specify the RAM/ROM sizes

#define PR_SEGTRANS   0x020000

the processor module supports the segment translation feature

(meaning it calculates the code addresses using the map_code_ea() function)

#define PR_NO_SEGMOVE   0x080000

the processor module doesn't support move_segm()

(i.e. the user can't move segments)

#define PR_DELAYED   0x800000

has delayed jumps and calls

if this flag is set, processor_t::is_basic_block_end, processor_t::has_delay_slot should be implemented

#define PR_ALIGN_INSN   0x1000000

allow ida to create alignment instructions arbitrarily.

Since these instructions might lead to other wrong instructions and spoil the listing, IDA does not create them by default anymore