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