| IDA SDK

Macros | Variables
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 (display only)
#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 fully supports type information callbacks; without full support, function argument locations and other things will probably be wrong. 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 (i.e. it creates additional segments). More...
#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_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() (i.e. 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)

## Variables
const problist_id_t | PR_NOBASE = 1
| Can't find offset base.
const problist_id_t | PR_NONAME = 2
| Can't find name.
const problist_id_t | PR_NOFOP = 3
| Can't find forced op (not used anymore)
const problist_id_t | PR_NOCMT = 4
| Can't find comment (not used anymore)
const problist_id_t | PR_NOXREFS = 5
| Can't find references.
const problist_id_t | PR_JUMP = 6
| Jump by table !!!! ignored.
const problist_id_t | PR_DISASM = 7
| Can't disasm.
const problist_id_t | PR_HEAD = 8
| Already head.
const problist_id_t | PR_ILLADDR = 9
| Exec flows beyond limits.
const problist_id_t | PR_MANYLINES = 10
| Too many lines.
const problist_id_t | PR_BADSTACK = 11
| Failed to trace the value of the stack pointer.
const problist_id_t | PR_ATTN = 12
| Attention! Probably erroneous situation.
const problist_id_t | PR_FINAL = 13
| Decision to convert to instruction/data is made by IDA.
const problist_id_t | PR_ROLLED = 14
| The decision made by IDA was wrong and rolled back.
const problist_id_t | PR_COLLISION = 15
| FLAIR collision: the function with the given name already exists.
const problist_id_t | PR_DECIMP = 16
| FLAIR match indecision: the patterns matched, but not the function(s) being referenced.
const problist_id_t | PR_END = 17
| Number of problem types.

## Macro Definition Documentation

## ◆ PR_TYPEINFO

#define PR_TYPEINFO 0x001000

the processor module fully supports type information callbacks; without full support, function argument locations and other things will probably be wrong.

## ◆ PR_BINMEM

#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

## ◆ PR_NO_SEGMOVE

#define PR_NO_SEGMOVE 0x080000

the processor module doesn't support move_segm() (i.e.

the user can't move segments)

## ◆ PR_DELAYED

#define PR_DELAYED 0x800000

has delayed jumps and calls.

If this flag is set, processor_t::is_basic_block_end, processor_t::delay_slot_insn should be implemented

## ◆ PR_ALIGN_INSN

#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