as (Unix)
as (lyhenne sanoista assembler) on Unix-käyttöjärjestelmän assembler-kääntäjän nimi.
Ohjelman ensimmäisen version Unixia varten teki Ken Thompson PDP-7:lle käyttöjärjestelmän kehityksen varhaisessa vaiheessa.[1] Ensimmäinen versio oli hyvin minimalistinen, joka tuotti kiinteällä nimellä (a.out) ohjelman joka oli suoraan ajettavissa.[1] Myöhempi PDP-11:n alustalle tehty versio noudatti DEC:in PAL-11R-kääntäjän syntaksia.[2]
Unixia siirrettäessä Interdata 8/32 -tietokoneelle assembler-kääntäjä oli yksi asia, joka ei ollut siirrettävissä: muun muassa tavujärjestys ja liukulukumuoto poikkesivat PDP-11:ssä käytetystä ja kääntäjän piti toimia eri tavoin riippuen siitä, kummalla alustalla sitä ajettiin.[3]
VAX-11:ssä toteutetun Berkeley Unixin (BSD) as:n pääasiallinen käyttötapaus oli kääntää C-kielen kääntäjän tuottamaa ohjelmakoodia, ja se sisälsi vain vähän myönnytyksiä ihmisten kirjoittaman koodin tuelle.[4]
as käyttää niin sanottua AT&T-syntaksia, jota myös useat muut assembler-kääntäjät tukevat, mutta joka eroaa Intelin käyttämästä syntaksista.[5][6][7]
Vaihtoehtoisia toteutuksia ovat muun muassa GNU-projektin GNU Assembler ja nasm.[7] Merkittäviä eroja syntaksissa ovat muun muassa:[7]
- lähde- ja kohdeoperandin järjestys
- välittömät arvo-operandit:
$
-merkin käyttö AT&T-syntaksissa (movl $4, %eax
) - rekisterioperandien etumerkki:
%
-merkin käyttö AT&T-syntaksissa (movl $4, %eax
) - operaation muuttujan koko:
b
,w
jal
-liitteiden käyttö operaatiokoodin perässä (esim.movl
) - välittömien hyppykäskyjen muoto:
$section, $offset
Lähteet
- Ritchie, Dennis M.: The Development of the C Language bell-labs.com. Viitattu 24.7.2017.
- Dennis M. Ritchie: UNIX Assembler Reference Manual (PDF) tom-yam.or.jp. Viitattu 9.10.2019. (englanniksi)
- S. C. Johnson & D. M. Ritchie: Portability of C Programs and the UNIX System bell-labs.com. 1978. Viitattu 6.9.2019. (englanniksi)
- Berkeley VAX/UNIX Assembler Reference Manual (PDF) maibriz.de. Viitattu 9.10.2019. (englanniksi)
- Robert Dewar: AT&T x86 Asm Syntax cs.nyu.edu. Arkistoitu . Viitattu 9.10.2019. (englanniksi)
- Red Hat Enterprise Linux 3: Using as, the Gnu Assembler web.mit.edu. Viitattu 9.10.2019. (englanniksi)
- Ram Narayan: Linux assemblers: A comparison of GAS and NASM 17.10.2007. IBM. Viitattu 9.10.2019. (englanniksi)
Aiheesta muualla
- What is int 80h? (englanniksi)
- Introduction to UNIX assembly programming (englanniksi)
- PAL-11R Assembler Programmer's Manual (PDF) (englanniksi)