Руководство пишет мне, используй инструкцию
MOVAPD—Move Aligned Packed Double-Precision Floating-Point Values
и приводит примеры:
MOVAPD xmm1, xmm2/m128
MOVAPD xmm2/m128, xmm1
У этих двух инструкций разные опкоды (28 и 29), и этот младший бит позволяет различить, где источник, а где приёмник. Хорошо.
Но мне непонятно, как писать инструкцию конкретно в синтаксисе GNU Assembler, ну, типа
movapd %XMM14, disp(%RSP, 1, -640)
Это не ассемблируется. Как правильно?
Пробую запускать это всё там:
https://www.onlinegdb.com/online_gcc_assembler
Код: Выделить всё
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
Код: Выделить всё
-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o a.out /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. /tmp/ccFpiMrd.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o
COLLECT_GCC_OPTIONS='-o' 'a.out' '-v' '-mtune=generic' '-march=x86-64' '-dumpdir' 'a.'