msg
. Isso resulta no tamanho do texto porque msg
aponta para o início da string e, como está logo em seguida, $ seria o endereço do final da string.
final - início = tamanho
write
. Essa syscall basicamente escreve dados em um arquivo. O primeiro argumento é um número que serve para identificar o arquivo para o qual queremos escrever os dados._start
e que magicamente esse é o código que o sistema operacional está executando primeiro? Isso acontece porque o linker definiu o endereço daquele símbolo como o entry point (ponto de entrada) do nosso programa.Então a função main de um programa em C é o entry point?
_start
definida pela própria libc._start
é o símbolo padrão que o ld define como entry point.%include
.