Assembler

A Wikipédiából, a szabad enciklopédiából

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.

Kapcsolódó szócikkek[szerkesztés]