如何解决装配中的分段错误?

时间:2019-06-19 08:45:23

标签: c assembly

我需要组装方面的帮助。我在C上有此代码,我需要在Assembly上进行翻译,并且结果必须像参考一样返回到C代码。这样做时,我遇到了细分错误。有人可以帮助我吗?

更多信息:VettRis是我将结果放入其中的数组,它的构建是在输入中与另一个向量的元素rigaDs相加

我试图为唯一的寄存器XMM0进行打印,并且一切正常。但是当我进行动作时,我会遇到细分错误

    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

0 个答案:

没有答案