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

Vlagvertoon
Arnout van Kempen over rommelen in een digitale wereld.

Klein leed en moedig voorwaarts
Arnout van Kempen schrijft wekelijks over wat hij noemt "rommelen in een digitale wereld". Deze week alweer editie 100 van zijn 'nerd-rubriek' voor liefhebbers.

Van 80x86 naar ARM
Arnout van Kempen over rommelen in een digitale wereld.

Van INT 21h naar syscalls
Arnout van Kempen over rommelen in een digitale wereld.

De TSR en protected mode
Arnout van Kempen over rommelen in een digitale wereld.