Latest available version: IDA and decompilers v8.4.240215 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
Processor feature bits

Used by processor_t::flag. More...

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.
 

Detailed Description

Used by processor_t::flag.

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