IDA SDK

- Main Page
- Header Files
- Classes
- Modules

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 understands IDP_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_FULL_HIFXP 0x100000
| REF_VHIGH operand value contains full operand More...
#define | PR_USE_ARG_TYPES 0x200000
| use processor_t::use_arg_types3 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_TINFO 0x20000000
| has support for tinfo_t
#define | PR_OUTER 0x40000000
| 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 codeSeg() function)

#define PR_NO_SEGMOVE 0x080000

the processor module doesn't support move_segm()

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

#define PR_FULL_HIFXP 0x100000

REF_VHIGH operand value contains full operand

(not only the high bits) Meaningful if processor_t::high_fixup_bits

#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