Understanding gcc build

I am doing a high school course on computer fundamentals, and I am trying to understand assembly code and created a hello world in C and compiled it in assembler. I understand that "mov r0, r3" moves data from register 3 to register 0. However, how do I understand what the value of r3 is?

Below is the assembly code that I use for my understanding:

.arch armv6
.eabi_attribute 27, 3
.eabi_attribute 28, 1
.fpu vfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 6
.eabi_attribute 34, 1
.eabi_attribute 18, 4
.file   "hello.c"
.section    .rodata
.align  2
.LC0:
    .ascii  "Hello World\000"
    .text
    .align  2
    .global main
    .type   main, %function
main:
    @ args = 0, pretend = 0, frame = 0
    @ frame_needed = 1, uses_anonymous_args = 0
    stmfd   sp!, {fp, lr}
    add     fp, sp, #4
    ldr     r0, .L2
    bl      printf
    mov     r0, r3
    ldmfd   sp!, {fp, pc}
.L3:
    .align  2
.L2:
    .word   .LC0
    .size   main, .-main
    .ident  "GCC: (Raspbian 4.9.2-10) 4.9.2"
    .section    .note.GNU-stack,"",%progbits

Below is my C code:

// Hello World program in C

#include<stdio.h>

main()
{
    printf("Hello World");
}
+4
source share
1 answer

GNU, "gdb"!
gdb --args ./store01 GNU.
.
, quit.
, , . , start, main() .
disassemble disas, assebler, .
stepi.
: info registers r3 !
: : p $r0 = 2.
. : https://www.gnu.org/software/gdb/documentation/
, : http://thinkingeek.com/2013/01/12/arm-assembler-raspberry-pi-chapter-4

+3

Source: https://habr.com/ru/post/1685817/


All Articles