Что делает следующая инструкция по сборке addsd -8 (%rbp), %xmm0?
Я пытаюсь выяснить, что на самом деле делает инструкция по сборке
addsd -8(%rbp), %xmm0
Я знаю, что это добавление с плавающей запятой на машине x86-64 с SSE2. Кроме того, я знаю, что %xmm0 является регистром. Однако я не уверен, что означает -8(%rbp). Руководства немного сбивают с толку.
в принципе, вопрос в том, означает ли -8(%rbp), что он принимает значение из регистра (возможно, последние 8 байтов rbp) или он принимает значение из памяти (значение с плавающей запятой со смещением -8 от адреса, содержащегося в rbp).
1 ответов
ваша вторая догадка верна. Это доступ к значению в -8
смещение байтов от адреса rbp
.
предполагая синтаксис AT&T, эта инструкция загружает 8-байтовый double
С адреса rbp - 8
и добавляет его к стоимости в нижней половине xmm0
.