#Klooienmetcomputers

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.

Arnout van Kempen di CCO CISA is directeur compliance & risk bij aaff, de fusieorganisatie van Alfa en ABAB. Hij schrijft op persoonlijke titel.

Gerelateerd

reacties

Reageer op dit artikel

Spelregels debat

    Aanmelden nieuwsbrief

    Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

    Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.