c++ to assembly

Converting C++ to Assembly Language

#include <iostream>

int main() {
    int a = 5;
    int b = 10;
    int c = a + b;
    std::cout << "The sum is: " << c << std::endl;
    return 0;
}
    .section    .rodata
.LC0:
    .string "The sum is: %d\n"
    .text
    .globl  main
    .type   main, @function
main:
    pushq   %rbp
    movq    %rsp, %rbp
    subq    $16, %rsp
    movl    $5, -4(%rbp)
    movl    $10, -8(%rbp)
    movl    -4(%rbp), %eax
    addl    -8(%rbp), %eax
    movl    %eax, -12(%rbp)
    movl    -12(%rbp), %eax
    movl    %eax, %esi
    movl    $.LC0, %edi
    call    printf
    movl    $0, %eax
    leave
    ret

Explanation

The provided C++ code calculates the sum of two integers and prints the result using the cout statement. The corresponding assembly code initializes the necessary variables, performs the addition, and uses the printf function to display the result. The main function begins with setting up the stack frame and then proceeds to allocate space for variables. The addition operation is carried out, and the result is stored in a new variable. Finally, the printf function is called to display the sum, and the main function concludes with returning 0.