#Klooienmetcomputers

Van INT 21h naar syscalls

Arnout van Kempen over rommelen in een digitale wereld.

We hebben gezien hoe het gebruik van BIOS ervoor zorgde dat CP/M op veel verschillende computers kon werken, mits ze maar een 8080 of Z80 CPU hadden. Datzelfde idee gebruikte IBM om de eerste pc's hardware-onafhankelijk te maken en daarmee zowel een commercieel succes te bouwen, als hun eigen concurrentie in het leven te roepen. CP/M en later MS-DOS gebruikten BIOS calls voor lagere hardwarefuncties en calls naar het besturingssysteem om hogere hardwarefuncties beschikbaar te maken voor de gebruiker. In MS-DOS liep dat via de INT 21h. Voor hobbyisten een prachtig systeem, helemaal omdat je via TSR’s en overnemen van interruptvectors het systeem geheel naar je hand kon zetten. In moderne systemen werkt dat niet veilig genoeg, gebruikers gaan elkaar in de weg zitten, processen kunnen elkaar verstoren. Het gebruik van een MMU en van een vorm van protected mode kan dat oplossen, mits het operating system netjes gebruik maakt van die mogelijkheden.

Het is van belang te bedenken dat operating systems hiermee grotendeels zelfs CPU-onafhankelijk worden. Linux op een PC met 80x86 werkt op logisch niveau exact hetzelfde als Linux op een mobiele telefoon met ARM processor. Wel zijn er duidelijke verschillen tussen POSIX-systemen enerzijds en Windows anderzijds. Beide systemen maken gebruik van een syscall, maar Windows schermt dat maximaal af om zo een omgeving te geven die makkelijk en veilig is maar weinig flexibiliteit gunt aan de programmeur, terwijl POSIX-systemen simpeler zijn van opzet, meer flexibiliteit en toegankelijkheid geven en daarmee ook ingewikkelder zijn voor de programmeur die meer zelf onder controle moet houden.

Ter vergelijking twee syscalls. De eerste op Linux:

section .data
    message db "Hello, Linux!", 0xA  ; De boodschap
    msg_len equ $ - message          ; Lengte van de boodschap

section .text
    global _start 

_start:
    ; Parameters instellen
    mov eax, 4         ; Syscall nummer voor 'write'
    mov ebx, 1         ; File descriptor (1 = STDOUT)
    mov ecx, message   ; Adres van de boodschap
    mov edx, msg_len   ; Lengte van de boodschap

    ; Syscall aanroepen
    int 0x80

    ; Programma beëindigen
    mov eax, 1         ; Syscall nummer voor 'exit'
    xor ebx, ebx       ; Exit code (0)
    int 0x80

We hebben het hier over een nieuwere 80x86, met bredere registers, vandaar de e voor de naam. De syscall wordt aangeroepen via interruptvector 80h en veel versiering zit er verder niet bij. Onder Windows ziet zoiets er zo uit:

section .data
    message db "Hello, Windows!", 0xA  ; De boodschap
    msg_len equ $ - message            ; Lengte van de boodschap

section .text
    global _start

_start:
    ; Handle voor STDOUT ophalen
    mov eax, 0x3F ; Syscall nummer voor 'GetStdHandle'
    mov ebx, -11  ; STD_OUTPUT_HANDLE (-11)
    int 0x2E      ; Schakel naar kernelmodus

    mov ebx, eax  ; Sla de STDOUT-handle op in ebx

    ; Bericht schrijven
    mov eax, 0x2D ; Syscall nummer voor 'NtWriteFile'
    mov ecx, ebx  ; Handle voor STDOUT
    mov edx, message ; Adres van de boodschap
    mov esi, msg_len ; Lengte van de boodschap
    int 0x2E      ; Schakel naar kernelmodus

    ; Programma beëindigen
    mov eax, 1    ; Functie om te stoppen
    xor ebx, ebx  ; Exit code (0)
    int 0x2E

Het werkt anders, maar de verschillen zijn niet dramatisch. Linux biedt wat meer rudimentaire faciliteiten dan Windows, maar de basis is heel vergelijkbaar.

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

6 reacties

Ron Heinen

@Arnout van Kempen

Aanvullend op mijn eerdere reactie kun je op de link:

https://www.rijksoverheid.nl/documenten/kamerstukken/2025/03/07/kamerbrief-appreciatie-motie-van-het-lid-six-dijkstra-over-onderzoeken-lokaal-draaien-ai-modellen-bij-de-overheid

lezen dat de staatssecretaris het hiermee eens is:

"Ik onderschrijf het belang van een veilige infrastructuur voor de inzet van AI binnen overheden. Daarom ben ik voorstander van het in eerste instantie onderzoeken van mogelijkheden om het overheidsbeleid zo vorm te geven dat AI-modellen in principe lokaal draaien, behalve in gevallen waarin zwaarwegende redenen dit verhinderen"

Ron Heinen

@Arnout van Kempen

Dank voor de reactie.

Een ander leuk voorbeeld case zou zijn om een AI-Systeem te trainen op eigen hardware.

Een van de grote gevaren op dit moment van de Cloud AI-Systemen is dat alle data verdwijnt in de Cloud.

Als je een AI-Systeem hebt draaien op je eigen hardware dan heb je dit gevaar niet.

Arnout van Kempen

Dank voor de suggesties. Ik schrijf deze rubriek overigens niet voor de gemiddelde accountant.nl lezer. Als iedereen zich op de gemiddelde bezoeker zou richten, zou dat een extreem saaie site opleveren. Ik weet dat wat ik schrijf uitsluitend boeiend is voor een uiterst klein groepje lezers.

Dus als je graag ziet dat ik ergens over schrijf, omdat je het zelf interessant vindt, laat het vooral weten. Maar ik richt me op een piepkleine niche, niet op zoveel mogelijk lezers of zoveel mogelijk nut. Ik ben geen broodschrijver maar een hobbyist die toevallig graag schrijft over zijn hobby

Ron Heinen

@Arnout van Kempen:

Dank voor je reactie.

Aansluitend bij je opmerking "Wie de toekomst wil begrijpen zal het verleden moeten kennen" is het voor een accountant.nl lezer wellicht ook informatief dat je in een toekomstige #Klooienmetcomputers met een data-analyse van een echte "warchalking" case, zoals je deze hebt beschreven in:

https://www.accountant.nl/achtergrond/2023/9/data-analyse/

https://www.accountant.nl/achtergrond/2023/7/warchalking/

Arnout van Kempen

Wie de toekomst wil begrijpen zal het verleden moeten kennen

Ron Heinen

Dank voor deze nieuwe #Klooienmetcomputers

Ik snap de uitleg welke je geeft, zie bijvoorbeeld ook mijn reacties op

https://www.accountant.nl/achtergrond/2025/1/de-basis-van-de-8080-registers-en-de-alu/

Ik vraag me wel af wat de gemiddelde accountant.nl lezer hier aan heeft.

Gelukkig komt ook de ARM architecuur in beeld: "Het is van belang te bedenken dat operating systems hiermee grotendeels zelfs CPU-onafhankelijk worden. Linux op een PC met 80x86 werkt op logisch niveau exact hetzelfde als Linux op een mobiele telefoon met ARM processor. "

ARM is de architectuur van de toekomst.

Wist je dat Intel opgesplitst is in een productie en ontwerp deel met de bedoeling om het te kunnen verkopen?

Op de nieuwe Apple Silicon machines met ARM architectuur processors draaien de oude Intel architecuur programma's ook als je Rosetta 2 gebruikt.

ARM is de toekomst. Intel het verleden.

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.