Как исправить ошибку сегментации на сборке? - PullRequest
1 голос
/ 19 июня 2019

Мне нужна помощь в сборке. У меня есть этот код на 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...