首页 > 解决方案 > 如何修复装配上的分段错误?

问题描述

我需要组装方面的帮助。我在 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

标签: cassembly

解决方案


推荐阅读