Question: I would like to get a list of all the available registers on an x86 machine .

My main objective is to get the list of names, even a simple list with just the names of all registers will be enough ( without any description ); I'll take anything, shell utility, c libraries, posix libraries, pseudo filesystems settings ... I'm willing to use anything .

Answer: 
Looking at your question tags I presume you mean the x86 processor registers.

Unfortunately, you can't get a list of these directly. Register names such as 'AH, AL, AX' are mnemonics to help us humans, the processor itself has no concept of these names.

Your list will have to come from secondary sources such a processor reference, assembler docs, wiki, etc.
There is no CPU instruction that lists all the registers. Making valid machine code requires knowing the encodings in the first place, so there would be no purpose in spending transistors to make the CPU hold a listing like that. The CPUID instruction will tell you whether the CPU supports Long Mode, SSE, and AVX, so you can tell from that whether those sets of registers are available.

Other than that, see the Intel manuals or register diagrams linked from the [x86](/questions/tagged/x86 "show questions tagged 'x86'") wiki.

---

There are programs that have lists of registers compiled into them. The one that comes to mind is `gdb`:

```
$ gdb /bin/true
(gdb) b _start
Function "_start" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (_start) pending.
(gdb) r
Starting program: /bin/true 

Breakpoint 1, 0x00007ffff7dd9cd0 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) info reg all
rax            0x0      0
rbx            0x0      0
rcx            0x0      0
...
r15            0x0      0
rip            0x7ffff7dd9cd0   0x7ffff7dd9cd0 <_start>
eflags         0x202    [ IF ]
cs             0x33     51
ss             0x2b     43
ds             0x0      0
es             0x0      0
fs             0x0      0
gs             0x0      0
st0            0        (raw 0x00000000000000000000)
...
fctrl          0x37f    895
fstat          0x0      0
ftag           0xffff   65535
fiseg          0x0      0
fioff          0x0      0
foseg          0x0      0
fooff          0x0      0
fop            0x0      0
mxcsr          0x1f80   [ IM DM ZM OM UM PM ]
ymm0           {v8_float = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_double = {0x0, 0x0, 0x0, 0x0}, v32_int8 = {0x0 <repeats 32 times>}, v16_int16 = {
    0x0 <repeats 16 times>}, v8_int32 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, v4_int64 = {0x0, 0x0, 0x0, 0x0}, v2_int128 = {0x00000000000000000000000000000000, 
    0x00000000000000000000000000000000}}
...
ymm15          ...

```

GDB is scriptable, so I'm sure you could get that dump without user interaction (without using `expect` to simulate user input for gdb).