Automatiseren wat je kan
Arnout van Kempen over rommelen in een digitale wereld.
In het verleden hebben we kleine scriptjes gemaakt om in C te gaan schrijven. En recent introduceerde ik een alias om nano te gebruiken als editor voor assembly. In Rust deed Cargo veel van het werk. Maar voor assembler missen we nog iets. Als we iedere keer
as -o test.o test.s
ld -o test test.o
rm test.o
chmod +x test
moeten doen, dan gaat dat wat vervelen. Natuurlijk, als we grotere projecten gaan doen waar we verschillende objectfiles moeten linken, dan komt hier variatie in. Maar zover zijn we nog lang niet. Dus is het handig om een scriptje te hebben dat assembleren, linken, executable rechten toekennen en opruimen van de objectfile ineens doet. En dan graag voor zowel .s als voor .asm files en wat foutafhandeling, nietwaar?
Maak in bash een tekstbestand, bijvoorbeeld build met de volgende inhoud:
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: build <input_file>"
exit 1
fi
INPUT=$1
EXT="${INPUT##*.}"
# Controleer of het een ondersteunde extensie is
if [ "$EXT" != "s" ] && [ "$EXT" != "asm" ]; then
echo "Error: Unsupported file extension. Use .s or .asm"
exit 1
fi
BASENAME=$(basename "$INPUT" .$EXT)
OUTPUT="${BASENAME}.o"
EXECUTABLE="${BASENAME}"
# Assembleer en link
as -o "$OUTPUT" "$INPUT" && \
ld -o "$EXECUTABLE" "$OUTPUT" && \
chmod +x "$EXECUTABLE"
# Controleer of de build geslaagd is
if [ $? -eq 0 ]; then
rm "$OUTPUT" # Wis het objectbestand
echo "Build complete: $EXECUTABLE (object file removed)"
else
echo "Build failed"
exit 1
fi
Maak dit bestand via chmod +x build een executable, plaats het ergens in je PATH (ik gebruik daarvoor ~/bin) en voila: je kan voortaan met build test.s of build test.asm de was doen.
Voor wie niet wil overtypen: op GitHub heb ik een subfolder gemaakt, Abmvk/kmc/asm, waar de code staat.
Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.
Gerelateerd

Einde van deze rubriek
Arnout van Kempen besluit met aflevering 112 voorlopig zijn reeks van wekelijkse bijdragen over 'rommelen in een digitale wereld': het zelf leren programmeren, verkennen...

Variabele input
Arnout van Kempen over rommelen in een digitale wereld.

Modulair bouwen
Arnout van Kempen over rommelen in een digitale wereld.

Tools voor debugging
Arnout van Kempen over rommelen in een digitale wereld.

Een echt project!
Arnout van Kempen over rommelen in een digitale wereld.