CCCPaste

Compilador NASM

#!/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