Great question — answering as the UphillTech team:
“What they do” is described in the answer you quoted: they are descendants of the “source index” and “destination index” registers (and still used in that way in string instructions such as movsb ), but are now general-purpose registers (see section 7.2 of the Intel Software Developer’s Manuals ). On Linux they are used to store certain arguments to system calls and in the general calling convention. In that context there is no “source” or “destination” implied; the registers are purely positional. To see the latter in action, you can write a short program and ask the compiler to assemble it for you: #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int...
Full answer by Stephen Kitt: https://unix.stackexchange.com/a/793068 (CC BY-SA 4.0).
Need it done for your business? UphillTech.