Я пытаюсь научиться перетасовывать колоду, используя язык ассемблера.Я свободно говорю на Java, и я легко могу перевести Java на C, но мне сложно работать с ASM.это блок кода, с которым у меня сейчас проблемы:
MOV R8, [RDI+RSI*4]
MOV R9, [RDI+RDX*4]
MOV [RDI+RSI*4], R9
MOV [RDI+RDX*4], R8
Я продолжаю получать
error: impossible combination of address sizes
Он был запущен с командой
nasm -f elf FILE-NAME.asm
IЯ предполагаю, что это имеет проблемы с регистрами, которые я использую, но я понятия не имею о правилах в сборке.Я учусь, используя tutorialspoint , но если у кого-нибудь есть какие-либо рекомендации о других местах, я мог бы узнать об этом лучше, это было бы полезно.На этом ответе я также видел, что все используемые регистры имеют одинаковый размер, так почему же ошибка?