Assembler

A Wikipédiából, a szabad enciklopédiából
Jump to navigation Jump to search

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.

Lásd még[szerkesztés]