Мне нужна помощь в сборке. У меня есть этот код на C, мне нужно передать его на ассемблере, и результат должен быть возвращен в C-код, как ссылка. Когда я делаю это, у меня есть ошибка сегментации. Кто-нибудь может мне помочь?
Для получения дополнительной информации: VettRis - это массив, в который я поместил свой результат, и он построен с добавлением элемента другого вектора на входе, называемого rigaDs
Я попытался сделать печать для единственного регистра XMM0, и все в порядке. Но когда я делаю MOV, у меня есть ошибка сегментации
float rigaDs[]={13.0, 2.0,71.8, 9.0};
float y[]={44.0, 1.4, 2.0, -4.0};
int dim=4;
float* vettRis;
centroGeo(rigaDs,dim, &vettRis);
stampaVettore(vettRis,dim);
seciton .data
rigaDs equ 8
dim equ 12
vettRis equ 16
section .text
push ebp
mov ebp, esp
pushad
mov eax, [ebp+rigaDs]
mov edi, [ebp+dim]
mov ebx, [ebp+vettRis]
xor esi, esi
forI:
cmp esi, edi
jge end
movups xmm0, [eax+esi*4]
movups [ebx+esi*4], xmm0
inc esi
jmp forI
end:
popad
mov esp, ebp
pop ebp
ret
результат должен быть 13,0, 2,0,71,8, 9,0