R a s p b e r e d

Usando o Raspberry Pi

Hello Printf

Programa para escrever “Hello Printf” na saída padrão

Chama a função “int printf(const char *format, …)” da linguagem C

/**
 * @file    hello_printf.s
 * @author  Halley Pacheco de Oliveira
 * @version 1.0
 * 
 * @section DESCRIPTION
 *
 * Programa para escrever "Hello Printf" na saída padrão.
 *
 * Chama a função "int printf(const char *format, ...)" da linguagem C.
 *
 * @output "Hello Printf"
 * @return Tamanho da mensagem, ou EOF se der erro.
 */

// Raspberry Pi 3 Modelo A+
.cpu    cortex-a53
.fpu    neon-fp-armv8
.syntax unified                 // Sintaxe moderna

// Equivalências

.equ    SYS_EXIT, 1

// Dados

.data

.align
formato:
        .string "Hello %s\n"    // Texto com controle da formatação (%s).

.align
texto:
        .string "Printf"        // Texto a ser formatado pelo controle %s.

// Código

.text
.global main
.global printf                  // Função printf da linguagem C.

main:
        LDR     R0, =formato    // Primeiro parâmetro de printf.
        LDR     R1, =texto      // Segundo parâmetro de printf.
        BL      printf          // Imprimir o texto formatado.
end:
        MOV     R7, #SYS_EXIT   // Número da chamada do sistema em R7 (terminar).
        SVC     0               // Chamar o sistema operacional.

Makefile:

hello_printf: hello_printf.o
        gcc -o hello_printf hello_printf.o
hello_printf.o: hello_printf.s
        as -o hello_printf.o hello_printf.s
clean:
        rm hello_printf.o hello_printf

Construção e execução:

pi@raspberrypi:~/raspbered/assembly/hello_printf $ make clean
rm hello_printf.o hello_printf

pi@raspberrypi:~/raspbered/assembly/hello_printf $ make
as -o hello_printf.o hello_printf.s
gcc -o hello_printf hello_printf.o

pi@raspberrypi:~/raspbered/assembly/hello_printf $ ./hello_printf ; echo $?
Hello Printf
13
Última atualização em 2019-07-26
Publicado em 2019-07-26