Регистры Intel 64, rsi и rdi

в архитектуре Intel 64 есть регистры rax..rdx, которые являются просто регистрами общего назначения A..D.

Но есть также регистры, называемые rsi и rdi, которые являются регистром "индекс источника" и "индекс назначения". почему эти регистры имеют фактические имена (по сравнению с просто A и т.д.)?
Что означает "индекс источника" и "индекс назначения"? И есть ли какое-то соглашение, в котором говорится, что эти регистры должны использоваться в определенных обстоятельствах?

Ответы

Ответ 1

Эти регистры были первоначально неявно использованы в повторяющихся инструкциях, например MOVSB, которые копируют байт из DS:SI (DataSegment: SourceIndex) в ES:DI (ExtraSegment: DestinationIndex) во время 16-битных компьютеров с сегментированная память в реальном режиме.

В настоящее время эти регистры, например, используются для передачи функциональных параметров в UNIXes x86_64 ABI, вдалеке от их первоначального наименования. И имена новых rXX 64-битных регистров ясно показывают, что старые имена регистра только здесь для знакомства и ретро-совместимости.