#!/bin/bash # Diretório de origem do repositório source_dir=$(pwd) # Diretório de origem para os códigos codes_dir="$source_dir/codes" # Diretório de origem para os assemblies asm_dir="$codes_dir/assembly" # Diretório de destino para os binários binary_dir="$codes_dir/bin" # Diretório de destino para os binários hex_dir="$codes_dir/hex" # Certifique-se de que o diretório de destino existe mkdir -p "$binary_dir" # Loop para compilar os assemblies for asm_file in "$codes_dir"/*.c; do if [ -f "$asm_file" ]; then asm_filename=$(basename "$asm_file") binary_filename="${asm_filename%.c}" # Compila o código riscv64-unknown-elf-gcc -S -march=rv32imac -mabi=ilp32 "$codes_dir/$asm_filename" \ -o "$asm_dir/$binary_filename.s" # Remove .atribute do codigo assemble python3 fix-asm.py $binary_filename.s # Converte o código de montagem em binário riscv64-unknown-elf-as -o $binary_filename.o "$asm_dir/$binary_filename.s" riscv64-unknown-elf-ld -T linker.ld -o $binary_filename.elf $binary_filename.o riscv64-unknown-elf-objcopy -O binary --remove-section .comment \ --remove-section .riscv.attributes --reverse-bytes=4 \ $binary_filename.elf "$binary_dir/$binary_filename" xxd -p "$binary_dir/$binary_filename" > "$hex_dir/$binary_filename.hex" # Removendo arquivos temporários rm $binary_filename.o $binary_filename.elf if [ -f $binary_dir/$binary_filename ]; then echo "Assembly $asm_filename compilado para $binary_filename" else echo "Não foi possível compilar Assembly $asm_filename" fi fi done echo "Compilação concluída!"