; Arquivo    : sections.asm
; Descrição  : Demonstra a definição das seções .rodata, .data, .bss e .text
; Montagem   : nasm -f elf64 sections.asm
; Link-edição: ld sections.o -o sections

section .rodata
	msg db "Eu sou imutável!", 0x0a
	len equ $ - msg

section .data
	contador dq 0		; preenche 8 bytes (qword) com 0x00 em 'contador'

section .bss
	buffer resb 32		; reserva 32 bytes no endereço 'buffer'

section .text
global _start			; ponto de entrada do programa

_start:
	mov rax, 1		; syscall: write
	mov rdi, 1		; fd 1 = stdout
	mov rsi, msg		; endereço da mensagem
	mov rdx, len		; tamanho da mensagem
	syscall

	mov rax, [contador]	; copia o dado no endereço 'contador' para rax
	inc rax			; incrementa em 1 o valor em rax
	mov [contador], rax	; copia o valor em rax para o endereço 'contador'

	mov rax, 60		; syscall: exit
	xor rdi, rdi		; estado de término = 0
	syscall
