Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22016

How a variable sized array in C work internally?

$
0
0

I am trying to understand how a variable sized static array work internally:

Following is a fixed size static array in C and its Assembly equivalent;

int main(){int arr[2] = {3};}================main:        push    rbp        mov     rbp, rsp        mov     QWORD PTR [rbp-8], 0        mov     DWORD PTR [rbp-8], 2        mov     eax, 0        pop     rbp        ret

However a variable sized array is shown below

int main(){int varSize ;int Arr[varSize];}=================main:        push    rbp        mov     rbp, rsp        sub     rsp, 32        mov     rax, rsp        mov     rcx, rax        mov     eax, DWORD PTR [rbp-4]        movsx   rdx, eax        sub     rdx, 1        mov     QWORD PTR [rbp-16], rdx        movsx   rdx, eax        mov     r8, rdx        mov     r9d, 0        movsx   rdx, eax        mov     rsi, rdx        mov     edi, 0        cdqe        lea     rdx, [0+rax*4]        mov     eax, 16        sub     rax, 1        add     rax, rdx        mov     edi, 16        mov     edx, 0        div     rdi        imul    rax, rax, 16        sub     rsp, rax        mov     rax, rsp        add     rax, 3        shr     rax, 2        sal     rax, 2        mov     QWORD PTR [rbp-24], rax        mov     rsp, rcx        mov     eax, 0        leave        ret

I am seeing a whole lot of assembly instructions if I declare a variable sized array. Can some one explain how is this flexibility of variable size achieved?


Viewing all articles
Browse latest Browse all 22016

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>