сборка x86, распределяющая массив структур динамически с использованием системных вызовов - PullRequest
0 голосов
/ 09 мая 2019

Мне нужна помощь с выделением памяти при системных вызовах в домашнем задании. Я получаю число «x» из аргумента командной строки, и мне нужно выделить массив структур «x», который включает два поля dword.

Я пытался сделать это с помощью системного вызова brk, но мне кажется, что я не очень хорошо понимаю, это моя попытка:

    mov eax, SYS_BRK                 ;using brk system call
    mov ebx, 0
    int 0x80
    mov [CORS], eax                  ;CORS-the array of the structs
    mov [initialallocated], eax

    mov ecx, [dronesNumber]          
    shl ecx, 3                      ;8 bytes * numberOfDrones
    mov eax, SYS_BRK
    mov ebx, [CORS]
    add ebx, ecx
    int 0x80
    mov [CORS], eax

    mov ecx, dronesNumber
    here:
    .myLoop:
            mov eax, SYS_BRK                
            mov ebx, 0
            int 0x80
            mov [CORS + 8*ecx], eax        ;segmentation fault here
            mov eax, SYS_BRK
            mov ebx, [CORS + 4*ecx]
            add ebx, ecx
            int 0x80
            mov [CORS + 4*ecx], eax

        loop .myLoop, ecx

...