#!/bin/bash # compila o arquivo no primeiro parâmetro arquivo=$1 # esse será o nome do arquivo sem extensão, que será o destino final origem="$arquivo.asm" # esse é o arquivo de origem (fonte) objeto="$arquivo.o" # esse é o arquivo objeto intermediário # compila o arquivo assembly com nasm nasm -f elf64 "$origem" -o "$objeto" if [ $? -ne 0 ]; then # se der erro ao compilar echo "Erro na compilação do arquivo $origem" exit 1 fi # linka o arquivo objeto para gerar o executável final ld "$objeto" -o "$arquivo" if [ $? -ne 0 ]; then # se der erro ao linkar echo "Erro ao linkar o arquivo $objeto" exit 1 fi # remove o arquivo objeto intermediário rm "$objeto" if [ $? -ne 0 ]; then # se der erro ao apagar o arquivo echo "Erro ao apagar o arquivo $objeto" exit 1 fi # finaliza com sucesso echo "Arquivo compilado: $arquivo" exit 0