Assemblersprog

Fra Wikipedia, den frie encyklopædi

Assembler(sprog/kode) er et 2. niveau programmeringssprog.

I praksis er det bare en symbolsk måde at skrive maskinkode på, eventuelt kombineret med et simpelt makrosystem. Oversættelsen fra assemblersprog til maskinkode varetages af en assembler. Da sproget afhænger af cpu'en, taler man eksempelvist om x86-assembler, ppc-assembler, etc. Assemblersprogets muligheder er også afhængigt af, hvilket styresystem, der bruges.

Den primære fordel ved assembler er at man kan lave hardwarenære optimeringer, der ikke er mulige i andre sprog. Ulempen er at det er besværligt at skrive.

Typisk skrives selve programmet i et højniveau sprog, og hvis det derefter er nødvendigt kan kritiske dele omskrives i assembler. Det er også nødvendigt at benytte assembler til visse dele af kernen i et styresystem.

[redigér] To slags instruktioner

Assemblersproget omfatter to typer instruktioner. Der er de instruktioner, der direkte oversættes til maskinkode og der er pseudoinstruktioner, som fortæller assembleren, hvordan koden overordnet skal laves. Man bruger blandt andet pseudoinstruktioner til at definere, hvilke funktioner og variabler, der skal udstilles for andre moduler.

[redigér] Eksempel

Et Hello world-program skrevet i GNU-assembler til Intels CPUer kunne se sådan ud:

# Simpelt Hello world! program

.data
msg:
        .string "Hello world!\n" # Meddelelse, der skal vises
len = . - msg # Længden på beskeden

.text
.global _start # ld bruger denne label som start
_start:
        # Vis besked
        xorl    %eax,%eax       # Ryd eax
        movb    $4,%al
        xorl    %ebx,%ebx
        incb    %bl             # bx = 1 
        movl    $msg,%ecx
        xorl    %edx,%edx
        movb    $len,%dl
        int     $0x80           # Alt i Linux sker via INT 80H

        # Afslut med returkode 0
        xorl    %eax,%eax
        incb    %al
        xorl    %ebx,%ebx 
        int     $0x80