Assembler
Az assembler egy számítógépes szoftver, fordítóprogram, amely az assembly nyelvben írt programok gépi kódra való fordítását végzi. Létezik keresztfordító változata is (cross assembler, hasonlóan a cross compiler-hez).
Az assembly mnemonikus kódjának fordítása mellett az assembler lehetőséget ad a memóriatartományok szimbolikus elnevezésére is, nem kevés munkát spórolva meg ezzel a programozónak egy-egy módosítás esetén, hisz nem kell újraszámolnia, és manuálisan módosítania a címeket a kódban. Különböző makró eljárásokat is ismer, mint például a behelyettesítés. Ez akkor jöhet jól, ha egy szekvenciát nem szubrutinként szeretnénk futtatni, hanem sorban. Így megmarad a program könnyebb olvashatósága, ugyanakkor nem romlik a teljesítmény.
Assemblert írni sokkal egyszerűbb, mint más, magas szintű fordítót. Assemblerek már az 1950-es évek óta léteznek. A mai RISC rendszereken – mint például a MIPS, a Sun SPARC, vagy a HP PA-RISC – futó modern assemblerek képesek az utasítások végrehajtásának sorrendjét optimalizálni, a processzorok (CPU) párhuzamos csatornáinak (pipeline) jobb kihasználása érdekében.
A magas szintű assemblerek már olyan, a magasabb szintű programozási nyelvekre jellemző megoldásokat biztosítanak, mint a fejlett vezérlő struktúrák, magas szintű eljárás/funkció deklarálás és hívás, továbbá magas szintű absztrakt adattípusok, beleértve a struktúrákat, rekordokat, egységeket (union), osztályokat (class) és készleteket (set) is.
Assemblerek
[szerkesztés]Több száz assembler létezik, néhány ismertebb közülük:
- FASM (Flat Assembler)
- GAS (GNU Assembler)
- HLA (High Level Assembler)
- MASM (Macro/MS Assembler)
- NASM (Netwide Assembler)
- TASM (Turbo Assembler)
- MPASM (MicrochiP Assembler)
Unix alatt az assemblereket hagyományosan csak as-nak hívják, annak ellenére, hogy nem egy kódról van szó, sőt, szinte mind teljesen különbözik egymástól.
Egy-egy processzorcsoporton belül minden assemblernek megvan a maga szintaxisa. Néha képesek egymás dialektusát lefordítani, mert az alapok nagyon hasonlóak, de a magasabb szintű kódok általában már nagy eltérést mutatnak. A TASM például értelmezni tudja a régi MASM kódokat, de ez fordítva már nem mondható el. A FASM és a NASM szintaxisa hasonló, de eltérő makrókat támogatnak, melyek problémát okozhatnak egymás kódjának fordításakor.