Llenguage ensamblador
El llenguage ensamblador o assembler (en anglés: assembler language i l'abreujament asm) és un llenguage de programació que s'usa en els microprocessadors. Implementa una representació simbòlica dels còdics de màquina binaris i atres constants necessàries per a programar una arquitectura de processador i constituïx la representació més directa del còdic màquina específic per a cada arquitectura llegible per un programador. Cada arquitectura de processador té el seu propi llenguage ensamblador que usualment és definida pel fabricant d'hardware, i està basada en els mnemònics que simbolisen els passos de processament (les instruccions), els registres del processador, les posicions de memòria i atres característiques del llenguage. Un llenguage ensamblador és per lo tant específic de certa arquitectura de computador física (o virtual). Açò està en contrast en la majoria dels llenguages de programació d'alt nivell, que idealment són portables.


Un programa utilitari cridat ensamblador és usat per a traduir sentències del llenguage ensamblador al còdic de màquina del computador objectiu. L'ensamblador realisa una traducció més o menys isomorfa (un mapage d'un a un) des de les sentències mnemòniques a les instruccions i senyes de màquina. Açò està en contrast en els llenguages d'alt nivell, en els quals una sola declaració generalment dona lloc a moltes instruccions de màquina.
Molts sofisticats ensambladors oferixen mecanismes adicionals per a facilitar el desenroll del programa, controlar el procés d'ensamblage, i l'ajuda de depuració. Particularment, la majoria dels ensambladors moderns inclouen una facilitat de macro (descrita més avall), i es diuen macro ensambladors.
Va ser usat principalment en els inicis del desenroll de software, quan encara no es contava en potents llenguages d'alt nivell i els recursos eren llimitats. Actualment s'utilisa en freqüència en ambients acadèmics i d'investigació, especialment quan es requerix la manipulació directa d'hardware, alt rendiment, o un us de recursos controlat i reduït. També és utilisat en el desenroll de controladors de dispositiu (en anglés, device drivers) i en el desenroll de sistemes operatius, per la necessitat de l'accés directe a les instruccions de la màquina. Molts dispositius programables (com els microcontroladors) encara conten en l'ensamblador com l'única manera de ser manipulats.
Característiques
- El còdic escrit en llenguage ensamblador posseïx una certa dificultat de ser entés ya que la seua estructura s'acosta al llenguage màquina, és dir, és un llenguage de baix nivell.
- El llenguage ensamblador és difícilment portable, és dir, un còdic escrit per a un microprocessador, pot necessitar ser modificat, per a poder ser usat en una atra màquina distinta. En canviar a una màquina en arquitectura diferent, generalment és necessari reescriure-ho completament.
- Els programes fets per un programador expert en llenguage ensamblador poden ser més ràpits i consumir menys recursos del sistema (ej: memòria RAM) que el programa equivalent compilado des d'un llenguage d'alt nivell. En programar cuidadosadament en llenguage ensamblador es poden crear programes que s'eixecuten més ràpidament i ocupen menys espai que en llenguages d'alt nivell. Conforme han evolucionat tant els processadors com els compiladors de llenguages d'alt nivell, esta característica del llenguage ensamblador s'ha tornat cada volta menys significativa. És dir, un compilador modern de llenguage d'alt nivell pot generar còdic casi tan eficient com el seu equivalent en llenguage ensamblador.[1]
- En el llenguage ensamblador es té un control molt precís de les tasques realisades per un microprocessador per lo que es poden crear segments de còdic difícils i/o molt ineficientes de programar en un llenguage d'alt nivell, ya que, entre atres coses, en el llenguage ensamblador es dispon d'instruccions de el CPU que generalment no estan disponibles en els llenguages d'alt nivell.
Programa ensamblador
- Artícul principal → Ensamblador.
Generalment, un programa ensamblador (assembler en anglés) modern crea còdic objecte traduint instruccions mnemòniques de llenguage ensamblador en opcodes, i resolent els nomenes simbòlics per a les localisacions de memòria i atres entitats.[2] L'us de referències simbòliques és una característica clau del llenguage ensamblador, evitant tediosos càlculs i actualisacions manuals de les direccions despuix de cada modificació del programa. La majoria dels ensambladors també inclouen facilitats de macros per a realisar substitució textual - ej. generar curtes seqüències d'instruccions com a expansió en llínea en lloc de cridar a subrutinas.
Els ensambladors són generalment més simples d'escriure que els compiladors per als llenguages d'alt nivell, i han estat disponibles des dels anys 1950. Els ensambladors moderns, especialment per a les arquitectura basades en RISC, tals com MIPS, Sun SPARC, i HP PA-RISC, aixina com també per al x86 (-64), optimisen la planificació d'instruccions per a explotar la segmentaació de el CPU eficientement.
En els compiladors per a llenguages d'alt nivell, són l'últim pas abans de generar el còdic eixecutable.
Número de passos
Hi ha dos tipos d'ensambladors basats en quants passos per mig de la font són necessaris per a produir el programa eixecutable.
- Els ensambladors d'un sol pas passen a través del còdic font una volta i assumixen que tots els símbols seran definits abans de qualsevol instrucció que els referixca.
- Els ensambladors de dos passos creen una taula en tots els símbols i els seus valors en el primer pas, despuix usen la taula en un segon pas per a generar còdic. L'ensamblador deu per lo manco poder determinar la llongitut de cada instrucció en el primer pas per a que puguen ser calculades les direccions dels símbols.
La ventaja d'un ensamblador d'un sol pas és la velocitat, que no és tan important com lo va ser en un moment donats els alvanços en velocitat i capacitats del computador. La ventaja de l'ensamblador de dos passos és que els símbols poden ser definits onsevullga en el còdic font del programa. Açò permet als programes ser definits de maneres més llògiques i més significatives, fent els programes d'ensamblador de dos passos més fàcils de llegir i mantindre.[3]
Ensambladors d'alt nivell
Els més sofisticats ensambladors d'alt nivell proporcionen abstracció del llenguage tals com:
- Estructures de control alvançades
- Declaracions i invocacions de procediments/funciones d'alt nivell
- Tipos de senyes abstractes d'alt nivell, incloent les estructures/récorts, unions, classes, i conjunts
- Processament de macros sofisticat (encara que està disponible en els ensambladors ordinaris des de finals dels anys 1960 per al IBM S/360, entre atres màquines)
- Característiques de programació orientada a objectes
Us del terme
Note que, en l'us professional normal, el terme ensamblador és freqüentment usat tant per a referir-se al llenguage ensamblador com també al programa ensamblador (que convertix el còdic font escrit en el llenguage ensamblador a còdic objecte que despuix serà enllaçat per a produir llenguage de màquina). Les dos expressions següents utilisen el terme "ensamblador":
Vore també
- Llenguage ensamblador x86
- Ensamblador
- Macro ensamblador
- Ensamblador d'alt nivell
- Desensamblador
- Compilador
- Decompilador
- Intérpret (informàtica)
- Depurador
- Llenguage d'alt nivell
- Llenguage de baix nivell
- Llenguage de màquina
- Conjunt d'instruccions
- Tipos de senyes màquina
- Little man computer
Ensambladors
- Comparació d'ensambladors
- High Level Assembly
- Netwide Assembler
- Flat assembler
- GNU Assembler
- Microsoft Macro Assembler
- ROSASM
- A86 i A386 assemblers
- Turbo Assembler
- GNU toolchain
Desensambladores
Depuradors
Uns atres
Sistemes operatius escrits completament en assembler:
Referències
- ↑ "DSP: C versus Assembly", Steven W. Smith, Ph.D., 2011
- ↑ David Salomon (1993). Assemblers and Loaders
- ↑ Beck, Leland L. (1996). «2», System Software: An Introduction to Systems Programming, Addison Wesley.
Bibliografia
- Dominic Sweetman: See MIPS Run. Morgan Kaufmann Publishers, 1999. ISBN 1-55860-410-3
- Robert Britton: MIPS Assembly Language Programming. Prentice Hall, 2003. ISBN 0-13-142044-5
- John Waldron: Introduction to RISC Assembly Language Programming. Addison Wesley, 1998. ISBN 0-201-39828-1
- ASM Community Book "An online book full of helpful ASM info, tutorials and code examples" by the ASM Community
- Jonathan Bartlett: Programming from the Ground Up. Bartlett Publishing, 2004. ISBN 0-9752838-4-7
Also available online as PDF - Archivat el 6 de febrer de 2009 archivat en Wayback Machine.
- Paul Carter: PC Assembly Language. Free ebook, 2001.
Website - Jeff Duntemann: Assembly Language Step-by-Step. Wiley, 2000. ISBN 0-471-37523-3
- Randall Hyde: The Art of Assembly Language. No Starch Press, 2003. ISBN 1-886411-97-2
Draft versions available online as PDF and HTML - Peter Norton, John Socha, Peter Norton's Assembly Language Book for the IBM PC, Brady Books, NY: 1986.
- Michael Singer, PDP-11. Assembler Language Programming and Machine Organization, John Wiley & Sons, NY: 1980.
- Principis d'arquitectura de computadores - Mills J. Murdocca - Vincent P. Heuring
- Este artícul conté una traducció derivada de «Lenguaje ensamblador» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.