#### G.5.4 i386 Features ¶

The ‘`org.gnu.gdb.i386.core`’ feature is required for i386/amd64 targets. It should describe the following registers:

- ‘`eax`’ through ‘`edi`’ plus ‘`eip`’ for i386
- ‘`rax`’ through ‘`r15`’ plus ‘`rip`’ for amd64
- ‘`eflags`’, ‘`cs`’, ‘`ss`’, ‘`ds`’, ‘`es`’, ‘`fs`’, ‘`gs`’
- ‘`st0`’ through ‘`st7`’
- ‘`fctrl`’, ‘`fstat`’, ‘`ftag`’, ‘`fiseg`’, ‘`fioff`’, ‘`foseg`’, ‘`fooff`’ and ‘`fop`’

The register sets may be different, depending on the target.

The ‘`org.gnu.gdb.i386.sse`’ feature is optional. It should describe registers:

- ‘`xmm0`’ through ‘`xmm7`’ for i386
- ‘`xmm0`’ through ‘`xmm15`’ for amd64
- ‘`mxcsr`’

The ‘`org.gnu.gdb.i386.avx`’ feature is optional and requires the ‘`org.gnu.gdb.i386.sse`’ feature. It should describe the upper 128 bits of YMM registers:

- ‘`ymm0h`’ through ‘`ymm7h`’ for i386
- ‘`ymm0h`’ through ‘`ymm15h`’ for amd64

The ‘`org.gnu.gdb.i386.mpx`’ is an optional feature representing Intel Memory Protection Extension (MPX). It should describe the following registers:

- ‘`bnd0raw`’ through ‘`bnd3raw`’ for i386 and amd64.
- ‘`bndcfgu`’ and ‘`bndstatus`’ for i386 and amd64.

The ‘`org.gnu.gdb.i386.linux`’ feature is optional. It should describe a single register, ‘`orig_eax`’.

The ‘`org.gnu.gdb.i386.segments`’ feature is optional. It should describe two system registers: ‘`fs_base`’ and ‘`gs_base`’.

The ‘`org.gnu.gdb.i386.avx512`’ feature is optional and requires the ‘`org.gnu.gdb.i386.avx`’ feature. It should describe additional XMM registers:

- ‘`xmm16h`’ through ‘`xmm31h`’, only valid for amd64.

It should describe the upper 128 bits of additional YMM registers:

- ‘`ymm16h`’ through ‘`ymm31h`’, only valid for amd64.

It should describe the upper 256 bits of ZMM registers:

- ‘`zmm0h`’ through ‘`zmm7h`’ for i386.
- ‘`zmm0h`’ through ‘`zmm15h`’ for amd64.

It should describe the additional ZMM registers:

- ‘`zmm16h`’ through ‘`zmm31h`’, only valid for amd64.

The ‘`org.gnu.gdb.i386.pkeys`’ feature is optional. It should describe a single register, ‘`pkru`’. It is a 32-bit register valid for i386 and amd64.