#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

3 reacties

Ron Heinen

@Arnout van Kempen

Dank voor het antwoord.

De file build kan ik vinden in ~/bin, de file test.s niet.

Maar ik neem aan dat je hiervoor ook hello.s uit

https://www.accountant.nl/achtergrond/2025/3/van-80x86-naar-arm

kunt gebruiken.

Arnout van Kempen

Klopt, en op GitHub staat ook aangegeven waar het bestand naar toe is verplaatst: ~/bin

En dat is dan ook waar het staat.

Ron Heinen

Dank voor deze nieuwe #Klooienmetcomputers

Zowel de file test.s als build kan ik niet vinden op je Github. Op de link:

https://drive.proton.me/urls/K20AY0YBA0#1hMkM3ohXy8a

kun je een voorbeeld vinden dat werkt op Apple Silicon machines met ARM processors, aansluitend op de vorige #Klooienmetcomputers.

Om het voorbeeld te gebruiken:

Kopieer de files, Start Terminal, ga naar de directory waar je de files hebt gekopieerd en typ make

De executable temp zal gemaakt worden.

Met ./temp kun je executable uitvoeren.

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

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.