segment .data x dd 0.0, 1.0, 2.0 y dd 1.0, 3.0, 5.0 segment .text global main, dot_product main: push rbp mov rbp, rsp lea rdi, [x] lea rsi, [y] call dot_product xor eax, eax leave ret dot_product: movss xmm0, [rdi] mulss xmm0, [rsi] movss xmm1, [rdi+4] mulss xmm1, [rsi+4] addss xmm0, xmm1 movss xmm2, [rdi+8] mulss xmm2, [rsi+8] addss xmm0, xmm2 ret