c - 如何修复装配上的分段错误?
问题描述
我需要组装方面的帮助。我在 C 上有这段代码,我需要在 Assembly 上翻译它,结果必须像参考一样返回到 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