| IDAPython 9.0
    | 
If your processor doesn't use segment registers, then these functions are of no use for you. However, you should define two virtual segment registers - CS and DS (for code segment and data segment) and specify their internal numbers in the LPH structure (processor_t::reg_code_sreg and processor_t::reg_data_sreg).
| Classes | |
| class | sreg_range_t | 
| Proxy of C++ sreg_range_t class.  More... | |
| Functions | |
| "sel_t" | get_sreg ("ea_t" ea, "int" rg) | 
| get_sreg(ea, rg) -> sel_t Get value of a segment register. | |
| "bool" | split_sreg_range ("ea_t" ea, "int" rg, "sel_t" v, "uchar" tag, "bool" silent=False) | 
| split_sreg_range(ea, rg, v, tag, silent=False) -> bool Create a new segment register range. | |
| "bool" | set_default_sreg_value ("segment_t *" sg, "int" rg, "sel_t" value) | 
| set_default_sreg_value(sg, rg, value) -> bool Set default value of a segment register for a segment. | |
| "void" | set_sreg_at_next_code ("ea_t" ea1, "ea_t" ea2, "int" rg, "sel_t" value) | 
| set_sreg_at_next_code(ea1, ea2, rg, value) Set the segment register value at the next instruction. | |
| "bool" | get_sreg_range ("sreg_range_t" out, "ea_t" ea, "int" rg) | 
| get_sreg_range(out, ea, rg) -> bool Get segment register range by linear address. | |
| "bool" | get_prev_sreg_range ("sreg_range_t" out, "ea_t" ea, "int" rg) | 
| get_prev_sreg_range(out, ea, rg) -> bool Get segment register range previous to one with address. | |
| "void" | set_default_dataseg ("sel_t" ds_sel) | 
| set_default_dataseg(ds_sel) Set default value of DS register for all segments. | |
| "size_t" | get_sreg_ranges_qty ("int" rg) | 
| get_sreg_ranges_qty(rg) -> size_t Get number of segment register ranges. | |
| "bool" | getn_sreg_range ("sreg_range_t" out, "int" rg, "int" n) | 
| getn_sreg_range(out, rg, n) -> bool Get segment register range by its number. | |
| "int" | get_sreg_range_num ("ea_t" ea, "int" rg) | 
| get_sreg_range_num(ea, rg) -> int Get number of segment register range by address. | |
| "bool" | del_sreg_range ("ea_t" ea, "int" rg) | 
| del_sreg_range(ea, rg) -> bool Delete segment register range started at ea. | |
| "void" | copy_sreg_ranges ("int" dst_rg, "int" src_rg, "bool" map_selector=False) | 
| copy_sreg_ranges(dst_rg, src_rg, map_selector=False) Duplicate segment register ranges. | |
| Variables | |
| R_es = _ida_segregs.R_es | |
| R_cs = _ida_segregs.R_cs | |
| R_ss = _ida_segregs.R_ss | |
| R_ds = _ida_segregs.R_ds | |
| R_fs = _ida_segregs.R_fs | |
| R_gs = _ida_segregs.R_gs | |
| SR_inherit = _ida_segregs.SR_inherit | |
| SR_user = _ida_segregs.SR_user | |
| SR_auto = _ida_segregs.SR_auto | |
| SR_autostart = _ida_segregs.SR_autostart | |
| "void" copy_sreg_ranges | ( | "int" | dst_rg, | 
| "int" | src_rg, | ||
| "bool" | map_selector = False ) | 
| dst_rg | (C++: int) number of destination segment register | 
| src_rg | (C++: int) copy ranges from | 
| map_selector | (C++: bool) map selectors to linear addresses using sel2ea() | 
| "bool" del_sreg_range | ( | "ea_t" | ea, | 
| "int" | rg ) | 
When a segment register range is deleted, the previous range is extended to cover the empty space. The segment register range at the beginning of a segment cannot be deleted.
| ea | (C++: ea_t) start_ea of the deleted range | 
| rg | (C++: int) the segment register number | 
| "bool" get_prev_sreg_range | ( | "sreg_range_t" | out, | 
| "ea_t" | ea, | ||
| "int" | rg ) | 
| out | (C++: sreg_range_t *) segment register range | 
| ea | (C++: ea_t) any linear address in the program | 
| rg | (C++: int) the segment register number | 
| "sel_t" get_sreg | ( | "ea_t" | ea, | 
| "int" | rg ) | 
This function uses segment register range and default segment register values stored in the segment structure.
| ea | (C++: ea_t) linear address in the program | 
| rg | (C++: int) number of the segment register | 
| "bool" get_sreg_range | ( | "sreg_range_t" | out, | 
| "ea_t" | ea, | ||
| "int" | rg ) | 
| out | (C++: sreg_range_t *) segment register range | 
| ea | (C++: ea_t) any linear address in the program | 
| rg | (C++: int) the segment register number | 
| "int" get_sreg_range_num | ( | "ea_t" | ea, | 
| "int" | rg ) | 
| ea | (C++: ea_t) any address in the range | 
| rg | (C++: int) the segment register number | 
| "size_t" get_sreg_ranges_qty | ( | "int" | rg | ) | 
| rg | (C++: int) the segment register number | 
| "bool" getn_sreg_range | ( | "sreg_range_t" | out, | 
| "int" | rg, | ||
| "int" | n ) | 
| out | (C++: sreg_range_t *) segment register range | 
| rg | (C++: int) the segment register number | 
| n | (C++: int) number of range (0..qty()-1) | 
| "void" set_default_dataseg | ( | "sel_t" | ds_sel | ) | 
| ds_sel | (C++: sel_t) | 
| "bool" set_default_sreg_value | ( | "segment_t *" | sg, | 
| "int" | rg, | ||
| "sel_t" | value ) | 
| sg | (C++: segment_t *) pointer to segment structure if nullptr, then set the register for all segments | 
| rg | (C++: int) number of segment register | 
| value | (C++: sel_t) its default value. this value will be used by get_sreg() if value of the register is unknown at the specified address. | 
| "void" set_sreg_at_next_code | ( | "ea_t" | ea1, | 
| "ea_t" | ea2, | ||
| "int" | rg, | ||
| "sel_t" | value ) | 
This function is designed to be called from idb_event::sgr_changed handler in order to contain the effect of changing a segment register value only until the next instruction.
It is useful, for example, in the ARM module: the modification of the T register does not affect existing instructions later in the code.
| ea1 | (C++: ea_t) address to start to search for an instruction | 
| ea2 | (C++: ea_t) the maximal address | 
| rg | (C++: int) the segment register number | 
| value | (C++: sel_t) the segment register value | 
| "bool" split_sreg_range | ( | "ea_t" | ea, | 
| "int" | rg, | ||
| "sel_t" | v, | ||
| "uchar" | tag, | ||
| "bool" | silent = False ) | 
This function is used when the IDP emulator detects that a segment register changes its value.
| ea | (C++: ea_t) linear address where the segment register will have a new value. if ea==BADADDR, nothing to do. | 
| rg | (C++: int) the number of the segment register | 
| v | (C++: sel_t) the new value of the segment register. If the value is unknown, you should specify BADSEL. | 
| tag | (C++: uchar) the register info tag. see Segment register range tags | 
| silent | (C++: bool) if false, display a warning() in the case of failure | 
| R_cs = _ida_segregs.R_cs | 
| R_ds = _ida_segregs.R_ds | 
| R_es = _ida_segregs.R_es | 
| R_fs = _ida_segregs.R_fs | 
| R_gs = _ida_segregs.R_gs | 
| R_ss = _ida_segregs.R_ss | 
| SR_auto = _ida_segregs.SR_auto | 
| SR_autostart = _ida_segregs.SR_autostart | 
| SR_inherit = _ida_segregs.SR_inherit | 
| SR_user = _ida_segregs.SR_user |