cyanic-selkie/wikianc huggingface dataset:
Historia de Letonia
Conquista soviética na Segunda Guerra Mundial
En 1944, cuando les meyores militares soviéticos llegaron a la zona,intensos combates tuvieron llugar en Letonia ente les tropes alemán y soviéticu, que terminó con otra derrota de los alemanes. Mientres el cursu de la guerra, tantu les fuercies alemanes como les soviétiques reclutaron letones pa los sos exércitos, aumentando d'esta manera la perda de "los recursos vivos de la nación". En 1944, una parte del territoriu de Letonia, una vegada más quedó so control soviéticu y los partisanos letonos empezaron la so llucha contra l'otru ocupante - la Xunión Soviética. 160.000 habitantes de Letonia huyenron a Alemaña y Suecia. Los primeros años dempués de la guerra carauterizar pola murnia y l'aveséu destín de la nación letona. El 25 de marzu de 1949, 43.000 habitantes de zones rurales ( "kulaks") y los patriotes de Letonia ( "nacionalistes") fueron deportaos a Siberia nuna operación represiva efectuada nos trés Estaos bálticos, que foi curioso planiada y aprobada en Moscú'l 29 de xineru de 1949. En total 120.000 habitantes de Letonia fueron encarcelaos o deportaos a campos de concentración soviéticos (el Gulag). Dalgunos llograron escapar de la detención y xuniéronse a los partisanos.
Llinguaxe ensamblador
El llinguaxe ensamblador, o assembler (n'inglés assembly language y la abreviación asm), ye un llinguaxe de programación de baxu nivel. Consiste nun conxuntu de mnemónicos que representen instruiciones básiques pa los ordenadores, microprocesadores, microcontroladores y otros circuitos integraos programables. Implementa una representación simbólica de los código de máquina binarios y otres constantes necesaries pa programar una arquiteutura de procesador y constitúi la representación más direuta del código máquina específicu pa cada arquiteutura legible por un programador. Cada arquiteutura de procesador tien el so propiu llinguaxe ensamblador que usualmente ye definida pol fabricante de hardware, y ta basada nos mnemónicos que simbolicen los pasos de procesamientu (les instruiciones), los rexistros del procesador, les posiciones de memoria y otres carauterístiques del llinguaxe. Un llinguaxe ensamblador ye polo tanto específicu de cierta arquiteutura d'ordenador física (o virtual). Esto ta en contraste cola mayoría de los llinguaxes de programación d'altu nivel, qu'idealmente son portables.
Historia de Letonia
Conquista soviética na Segunda Guerra Mundial
Nel periodu posterior a la guerra, Letonia viose obligada a adoptar métodos de producción soviética y l'infraestructura económica desenvuelta nos años 1920 y 1930 foi erradicada. Les zones rurales viéronse obligaes a la coleutivización. L'arribación masiva de trabayadores, alministradores, personal militar y los sos dependientes de Rusia y otres repúbliques de la URSS empezó. En 1959 cerca de 400.000 persones llegaron d'otres repúbliques soviétiques y la población d'etnia letona cayera al 62%. [19] Un ampliu programa pa imponer el billingüismu empecipiar en Letonia, la llimitación del usu de la llingua letona, en favor de la rusa. Toles escueles de les minoríes (xudíos, polacos, bielorrusos, estonios, lituanos) cerráronse dexando namái dos idiomes d'instrucción nes escueles;letón y rusu. [20] L'idioma rusu enséñase acompañáu de la lliteratura rusa, música rusa y la historia de la Xunión Soviética (en realidá, la historia de Rusia).
El 5 de marzu 1953 Josif Stalin morrió y siendo el so socesor Nikita Kruschev. El periodu conocíu como'l destemple de Kruschev empezó, pero los intentos de los comunistes letonos encabezadures por Eduards Berklavs pa llograr un grau d'autonomía pa la república y protexer la situación de rápidu deterioru de la llingua letona nun tuvieron ésitu. En 1959, dempués de la visita de Kruschev a Letonia comunistes nacionales fueron desaposiaos de los sos puestos y Berklavs foi deportáu a Rusia.
Daisy Greville
Romances
Tres la muerte d'Eduardu VII y por cuenta de que tenía grandes deldes, trató de chantajear al so fíu, el nuevu rey Xurde V. Amenació con faer públiques una serie de cartes d'amor escrites por Eduardu VII. Lord Stamfordham cola so esperiencia y astucia llogró detener la publicación col argumentu de que los derechos d'autor pertenecíen al Rei. Daisy atopar ensin más recursos y morrió cuasi ensin dineru.
Historia de Letonia
Conquista soviética na Segunda Guerra Mundial
En 1989, los letones étnicos constituyíen aproximao'l 52% de la población (1.387.757), frente a la proporción del 77% (1.467.035) anterior a la Segunda Guerra Mundial. En 2005 había 1.357.099 letones étnicos, qu'amuesa un amenorgamientu real na población titular. Proporcionalmente, sicasí, la etnia letona yá cunta con aproximao'l 60% de la población total de Letonia (2.375.000).
Llinguaxe ensamblador
Un programa utilitariu llamáu ensamblador ye usáu pa traducir sentencies del llinguaxe ensamblador al códigu de máquina del ordenador oxetivu. L'ensamblador realiza una traducción más o menos isomorfa (un mapeo d'unu a unu) dende les sentencies mnemónicas a les instruiciones y datos de máquina. Esto ta en contraste colos llinguaxes d'altu nivel, nos cualos una sola declaración xeneralmente da llugar a munches instruiciones de máquina.
Daisy Greville
Política y filantropía
Tamién fundó una escuela de cordura en Easton, Essex, y l'Universidá Agrícola de la Muyer Studley y una sede pa reunión de sindicalistes en Easton Lodge, que permaneció como una residencia privada dempués de que la familia camudar al castiellu de Warwick. Creó frondosos xardinos pela redolada de Easton Lodge y tamién un pequeñu zoolóxicu priváu. El novelista H. G. Wells foi unu de los residentes de la propiedá.
Llinguaxe ensamblador
Munchos sofisticaos ensambladores ufierten mecanismos adicionales pa facilitar el desenvolvimientu del programa, controlar el procesu d'ensamblaxe, y l'ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos inclúin una facilidá de macro (descrita más embaxo), y llámense macro ensambladores.
Foi usáu principalmente nos entamos del desenvolvimientu de software, cuando entá nun se cuntaba con potentes llinguaxes d'altu nivel y los recursos yeren llindaos. Anguaño utilízase con frecuencia n'ambientes académicos y d'investigación, especialmente cuando se riquir la manipulación direuta de hardware, altu rendimientu, o un usu de recursos controláu y amenorgáu. Tamién ye utilizáu nel desenvolvimientu de Manejador de dispositivu controladores de dispositivu (n'inglés, device drivers) y nel desenvolvimientu de sistemes operativos, por cuenta de la necesidá del accesu direutu a les instruiciones de la máquina. Munchos dispositivos programables (como los microcontroladores) entá cunten col ensamblador como la única manera de ser manipoliaos.
Programa ensamblador
Xeneralmente, un programa ensamblador (assembler n'inglés) modernu crea códigu oxeto traduciendo instruiciones mnemónicas de llinguaxe ensamblador en opcodes, y resolviendo los nomes simbólicos pa les llocalizaciones de memoria y otres entidaes. L'usu de referencies simbóliques ye una carauterística clave del llinguaxe ensamblador, evitando aburribles cálculos y actualizaciones manuales de les direiciones dempués de cada cambéu del programa. La mayoría de los ensambladores tamién inclúin facilidaes de macros pa realizar sustitución testual - ej. xenerar curties secuencies d'instruiciones como espansión en llinia en cuenta de llamar a subrutines.
Los ensambladores son xeneralmente más simples d'escribir que los compiladores pa los llinguaxes d'altu nivel, y tuvieron disponibles dende los años 1950. Los ensambladores modernos, especialmente pa les arquitectures basaes en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, según tamién pal x86 (-64), optimicen la planificación d'instruiciones pa esplotar la segmentación del CPU eficientemente.
Nos compiladores pa llinguaxes d'altu nivel, son el postreru paso antes de xenerar el códigu ejecutable.
Númberu de camín Hai dos tipos de ensambladores basaos en cuántos pasos al traviés de la fonte son necesarios pa producir el programa ejecutable.
La ventaya d'un ensamblador d'un solu pasu ye la velocidá, que nun ye tan importante como lo foi nun momentu daos les meyores en velocidá y capacidaes del ordenador. La ventaya del ensamblador de dos pasos ye que los símbolos pueden ser definíos uquier nel códigu fonte del programa. Esto dexa a los programes ser definíos de maneres más lóxiques y más significatives, faciendo los programes de ensamblador de dos pasos más fáciles de lleer y caltener.
Historia de Letonia
Final de la dómina soviética
En 1988 el Movimientu pola Independencia de Letonia (LNNK) esixó la llibertá de prensa, el fin de la "rusificación" del país y la formación de partíos políticos independientes.
En 1989, el Congresu del Frente Popular de Letonia (LFT) ganó les eleiciones y aprobóse la independencia económico y político, magar la resistencia de Moscú. So la presidencia de Guntis Ulmanis, en 1993 diose entamu a la lliberalización económica, que provocó una grave crisis de desemplegu de mala recuperación. Magar la privatización masiva d'empreses estatales, la inestabilidá político y económico siguió hasta 1995, cuando les reformes nel comunismu soviéticu como la glásnost aguiyaron el movimientu d'independencia letón, reponiendo Letonia la so independencia'l 21 d'agostu de 1991 arriendes de la llamada Revolución Cantada.
En 1990, el Congresu de l'antigua XRSS reconoció formalmente la independencia de les Repúbliques del Bálticu, que, tiempu dempués, tamién fueron almitíes como miembros de la ONX y en 2004 entraron a formar parte de la OTAN.
Nos últimos años del sieglu XX y empiezos del XXI, la sociedá letona enfrentar con tensiones étniques que se compliquen pola diversidá racial del país y pola fuerte influencia rusa.
Ingresu na Unión Europea
El 20 de setiembre del 2003 aprobar por referendu (69,6 % de los letones, aproximao 1,4 millones) l'adhesión del so país a la Xunión Europea como yá realizaron Lituania y Estonia. La entrada oficial realizar en mayu del 2004. El 1 de xineru de 2014, convertir nel décimoctavo país de la eurozona.
Llinguaxe ensamblador
Ensambladores d'altu nivel
Los más sofisticaos ensambladores d'altu nivel apurren astraiciones del llinguaxe tales como:
Usu del términu
Note que, nel usu profesional normal, el términu ensamblador ye frecuentemente usáu tantu pa referise al llinguaxe ensamblador como tamién al programa ensamblador (que convierte'l código fuente escritu nel llinguaxe ensamblador a códigu oxeto que depués va ser enllazáu pa producir llinguaxe de máquina). Los dos espresiones siguientes utilicen el términu "ensamblador":
Sargentes de la Lora
Sargentes de la Lora ye una llocalidá y un conceyu asitiáu na provincia de Burgos, na comunidá autónoma de Castiella y Llión (España), contorna de Pandoriales, partíu xudicial de Burgos, cabecera del conceyu del so nome.
Llinguaxe ensamblador
Llinguaxe
El llinguaxe ensamblador reflexa direutamente l'arquiteutura y les instruiciones en llinguaxe de máquina de la CPU, y pueden ser bien distintes d'una arquiteutura de CPU a otra. Cada arquiteutura de microprocesador tien el so propiu llinguaxe de máquina, y en consecuencia'l so propiu llinguaxe ensamblador una y bones esti atópase bien amestáu a la estructura del hardware pal cual se programa. Los microprocesadores difieren nel tipu y númberu d'operaciones que soporten; tamién pueden tener distinta cantidá de rexistros, y distinta representación de los tipos de datos en memoria. Anque la mayoría de los microprocesadores son capaces de cumplir esencialmente les mesmes funciones, la forma en que lo faen difier y los respeutivos llinguaxes ensamblador reflexen tal diferencia.
Instruiciones de CPU
La mayoría de les CPU tienen más o menos los mesmos grupos d'instruiciones, anque non necesariamente tienen toles instruiciones de cada grupu. Les operaciones que pueden realizase varien d'una CPU a otra. Una CPU particular puede tener instruiciones que nun tenga otru y viceversa. Los primeres microprocesadores de 8 bits nun teníen operaciones pa multiplicar o estremar númberos, por casu, y había que faer subrutinas pa realizar eses operaciones. Otres CPU pue que nun tengan operaciones de puntu flotante y habría que faer o consiguir biblioteques que realicen eses operaciones.
Sargentes de la Lora
Llocalidaes
El conceyu entiende les llocalidaes d'Ayoluengo, Lorilla, Moradillo del Castillo, San Andrés de Montearados, Santa Coloma del Rudrón y Valdeajos.
Llinguaxe ensamblador
Instruiciones de CPU
Les instruiciones de la CPU pueden arrexuntase, d'alcuerdu a la so funcionalidad, en:
Sargentes de la Lora
Llocalidaes
Tamién entiende'l despoblado de Ceniceros.
Llinguaxe ensamblador
Instruiciones de CPU
Operaciones con enteros: (de 8, 16, 32 y 64 bits dependiendo de l'arquiteutura de la CPU, nos sistemes bien vieyos tamién de 12, 18, 24, 36 y 48 bits)
Sargentes de la Lora
Historia
El pozu petrolíferu Ayo 37, na redoma de Sargentes de la Lora|thumb|left|250px Villa que formaba parte del Partíu de Burgos, unu de los catorce que formaben la Intendencia de Burgos, na so categoría de pueblos solos, mientres el periodu entendíu ente 1785 y 1833, nel Censu de Floridablanca de 1787, xurisdicción de señoríu siendo'l so titular el Monesteriu de les Fuelgues, que la so abadesa nomaba alcalde ordinariu.
Ente'l Censu de 1857 y l'anterior, crez el términu del conceyu porque incorpora a * 095009 Ayoluengo, * 095064 Lorilla, * 095076 Moradillo del Castillo, * 095127 San Andrés de Montearados, * 095139 Santa Coloma del Rudrón y * 095165 Valdeajos
El 6 de xunu de 1964, unos 6.000 llitros de petroleu salieron de les coraes de la Lora. Yera la primer vegada qu'apaecía petroleu n'España y la noticia recibir con alegranza en tol país. Ellí establecióse la estación petrolífera qu'operó hasta 2017
En 2005 y 2006 celebróse'l festival de música punk Petroleu Rock, treslladándose en 2007 a Miranda de Ebro.
Demografía
El conceyu cunta con 132 habitantes (INE 2013).
Llinguaxe ensamblador
Instruiciones de CPU
Estes son operaciones realizaes pola Unidá aritméticu lóxica de la CPU
Sargentes de la Lora
Dolmen
Na paramera de Sargentes alcuéntrase un importante dolmen, construyíu con bloques caliares, que se correspuende col tipu de tumba denomináu «sepulcru de corredor». Los elementos principales que caractericen esti monumentu megalíticu son: una cámara de planta paracircular de tres metros de diámetru, definida por siete grandes ortostatos que superen los dos metros d'altor; l'accesu a esta cámara realízase al traviés d'un corredor de cinco metros de llargu, que delimitan, de nuevu, ortostatos similares a los descritos y que sirven de sofitos a les grandes lloses que cubríen el pasiellu, de les que se caltienen trés. La estructura taba definida nel interior d'un ampliu túmulu construyíu con amontonamientos de piedres y tierra, calteniéndose, nel área más favorable, un perímetru que desenvuelve un radiu de nueve metros dende'l centru de la cámara.
Llinguaxe ensamblador
Instruiciones de CPU
Operaciones booleanas. Operaciones lóxiques bit a bit como AND, OR, XOR, NOT
Operaciones de mover datos:
Dende un rexistru a un llugar de la memoria :* Dende un llugar de la memoria a un rexistru :* Dende un llugar a otru de la memoria :* Un valor inmediatu a un rexistru :* Un valor inmediatu a un llugar de memoria
Operaciones pal control del fluxu del programa:
Operaciones con númberos reales:
L'estándar pa les operaciones con númberos reales nes CPU ta definíu pol IEEE 754.
Una CPU puede tener operaciones de puntu flotante con númberos reales por aciu el coprocesador numbéricu (si hai), como les siguientes:
Operaciones trascendentales
El llinguaxe ensamblador tien mnemónicos pa caúna de les instruiciones de la CPU en adición a otros mnemónicos a ser procesaos pol programa ensamblador (como por casu macros y otres sentencies en tiempu de ensamblado).
Ensamblado
El tresformamientu del llinguaxe ensamblador en código máquina realizar un programa ensamblador, y la traduición inversa poder efeutuar un desensamblador. A diferencia de los llinguaxes d'altu nivel, equí hai usualmente una correspondencia 1 a 1 ente les instruiciones simples del ensamblador y el llinguaxe de máquina. Sicasí, en dellos casos, un ensamblador puede aprovir "pseudo instruiciones" que s'espanden nun códigu de máquina más estensu con cuenta d'aprovir la funcionalidad necesaria y simplificar la programación. Por casu, pa un códigu máquina condicional como "si X mayor o igual que", un ensamblador puede utilizar una pseudoinstruición al grupu "faiga si menor que", y "si = 0" sobre la resultancia de la condición anterior. Los Ensambladores más completos tamién aproven un ricu llinguaxe de macros que s'utiliza pa xenerar códigu más complexu y secuencies de datos.
Pal mesmu procesador y el mesmu conxuntu d'instruiciones de CPU, distintos programes ensambladores pueden tener, cada unu d'ellos, variaciones y diferencies nel conxuntu de mnemónicos o na sintaxis del so llinguaxe ensamblador. Por casu, nun llinguaxe ensamblador pa l'arquiteutura x86, puede espresase la instruición pa mover  al rexistru   de la siguiente manera: , ente que pa otru ensamblador pa la mesma arquiteutura espresaríase al aviesu:. Dambos llinguaxes ensambladores fadríen esautamente lo mesmo, solo que ta espresáu de manera distinta. El primeru usa la sintaxis d'Intel, ente que'l segundu usa la sintaxis de AT&T
L'usu del ensamblador nun resuelve definitivamente'l problema de cómo programar un sistema basáu en microprocesador de manera senciella yá que pa faer un usu eficiente del mesmu, hai que conocer a xeitu el microprocesador, los rexistros de trabayu de que dispón, la estructura de la memoria, y munches coses más referentes a la so estructura básica de funcionamientu.
Exemplos
Un programa escritu en llinguaxe ensamblador consiste nuna serie d'instruiciones que correspuenden al fluxu d'ordes ejecutables por un microprocesador.
Por casu, nel llinguaxe ensamblador pa un procesador x86:
La sentencia * Asigna'l valor hexadecimal  (97 decimal) al rexistru " ".
El programa ensamblador llee la sentencia de riba y produz el so equivalente binariu en llinguaxe de máquina
El mnemónico  ye un códigu d'operación o "opcode". El opcode ye siguíu por una llista d'argumentos o parámetros, completando una típica instruición de ensamblador. Nel exemplu,  ye un rexistru de 8 bits del procesador, al cual va asignáse-y el valor hexadecimal 61 especificáu.
El códigu de máquina xeneráu pol ensamblador consiste de 2 bytes. El primer byte contién empaquetado la instruición MOV y el códigu del rexistru escontra onde se va a mover el datu:
1011 0000 01100001 | | | | | + Númberu 61h en binariu | | | +--- Rexistru A LA Instruición MOV
Nel segundu byte especifícase'l númberu 61h, escritu en binariu como, que se va asignar al rexistru  , quedando la sentencia ejecutable como:
La cual puede ser entendida y executada direutamente pol procesador.
Elementos básicos
Hai un grau grande de diversidá na manera en que los autores de los ensambladores categorizan les sentencies y na nomenclatura qu'usen. En particular, dalgunos describen cualquier cosa como pseudo-operación (pseudo-Op), con esceición del mnemónico de máquina o del mnemónico estendíu.
Un típicu llinguaxe ensamblador consiste en 3 tipos de sentencies d'instruición que son usaes pa definir les operaciones del programa:
Nemónicos de opcode y mnemónicos estendíos
A diferencia de les instruiciones (sentencies) de los llinguaxes d'altu nivel, les instruiciones nel llinguaxe ensamblador son xeneralmente bien simples. Xeneralmente, una mnemónico ye un nome simbólicu pa una sola instruición en llinguaxe de máquina ejecutable (un opcode), y hai a lo menos un mnemónico de opcode definíu pa cada instruición en llinguaxe de máquina. Cada instruición consiste típicamente nuna operación o opcode más cero o más operandos. La mayoría de les instruiciones refieren a un solu valor, o a un par de valores. Los operandos pueden ser inmediatos (típicamente valores d'un byte, codificados na mesma instruición), rexistros especificaos na instruición, implícitos o les direiciones de los datos alcontraos n'otra parte de la memoria. Esto ta determináu pola arquiteutura subxacente del procesador, l'ensamblador a cencielles reflexa cómo trabaya esta arquiteutura. Los mnemónicos estendíos son frecuentemente usaos pa especificar una combinación d'un opcode con un operando específicu, ej, l'ensamblador del System/360 usa a  como un mnemónico estendíu pal   con una mázcara de 15 y   al   con una mázcara de 0.
Los mnemónicos estendíos son frecuentemente usaos pa soportar usos especializaos d'instruiciones, de cutiu pa propósitos non obvios con respectu al nome de la instruición. Por casu, munchos CPU nun tienen una instruición esplícita de  (Non Operación), pero tienen instruiciones que puedan ser usaes pa tal propósitu. Nel CPU 8086, la instruición  (intercambia'l rexistru AX consigo mesmu) ye usada pal , con   siendo un pseudo-opcode para codificar la instruición. Dellos desensambladores reconocen esto y decodificarán la instruición  como. Similarmente, los ensambladores de IBM pal System/360 usen los mnemónicos estendíos  y   coles mázcares cero pa   y.
Dellos ensambladores tamién soporten simples macroinstruiciones incorporaes que xeneren dos o más instruiciones de máquina. Por casu, con dellos ensambladores pal Z80, la instruición xenera les instruiciones
Seiciones de datos
Hai instruiciones usaes pa definir elementos de datos pa remanar datos y variables. Definen el tipu de datu, el llargor y l'alliniación de los datos. Estes instruiciones tamién pueden definir si los datos tán disponibles pa programes esteriores (programes ensamblados xebradamente) o solamente pal programa nel cual la seición de datos ta definida. Dellos ensambladores clasifiquen estes instruición
Direutives del ensamblador
Les direutives del ensamblador, tamién llamaes los pseudo opcodes, pseudo-operaciones o pseudo-ops, son instruiciones que son executaes por un ensamblador nel tiempu de ensamblado, non por un CPU nel tiempu d'execución. Pueden faer al ensamblado del programa dependiente de parámetros entraos por un programador, de cuenta que un programa pueda ser ensamblado de distintes maneres, quiciabes pa diversos aplicaciones. Tamién pueden ser usaes pa manipoliar la presentación d'un programa pa faelo más fácil lleer y caltener.
Por casu, les direutives pudieren ser usaes p'acutar árees d'almacenamientu y opcionalmente el so p'asignar el so conteníu inicial. Los nomes de les direutives de cutiu empiecen con un puntu pa estremales de les instruiciones de máquina.
Los ensambladores simbólicos déxen-y a los programadores acomuñar nomes arbitrarios (etiquetes o símbolos) a posiciones de memoria. Usualmente, cada constante y variable tien un nome por que les instruiciones pueden referir a esos allugamientos por nome, asina promoviendo'l códigu autodocumentado. Nel códigu ejecutable, el nome de cada subprograma ye acomuñáu al so puntu d'entrada, asina que cualquier llamada a un subprograma puede usar el so nome. Dientro de subprogramas, a los destinos GOTO dánse-y etiquetes. Dellos ensambladores soporten símbolos locales que son léxicamente distintos de los símbolos normales (ej, l'usu de "10$" como un destín GOTO).
Los llinguaxes ensambladores, como la mayoría de los otros llinguaxes d'ordenador, dexen que comentarios sían agregos al código fuente, que son inoraos pol programa ensamblador. El bon usu de los comentarios ye entá más importante con códigu ensamblador que con llinguaxes d'altu nivel, pos el significáu y el propósitu d'una secuencia d'instruiciones ye más duru de descifrar a partir del códigu en sí mesmu.
L'usu sabiu d'estes facilidaes puede simplificar grandemente los problemes de codificar y caltener el códigu de baxu nivel. El códigu fonte de llinguaxe ensamblador crudu xeneráu por compiladores o desensambladores - códigu ensin nengún comentariu, nin símbolos con dalgún sentíu, nin definiciones de datos - ye bien malo de lleer cuando tienen de faese cambeos.
Macros
Munchos ensambladores soporten macros predefinidas, y otres soporten macros definíes (y repetidamente redefinibles) pol programador qu'impliquen secuencies de llinies del testu nes cualos les variables y les constantes tán empotraes. Esta secuencia de llinies de testu puede incluyir opcodes o direutives. Una vegada una macro defínese, el so nome puede usase en llugar d'un mnemónico. Cuando'l ensamblador procesa tal sentencia, reemplaza la sentencia peles llinia del testu acomuñaes a esa macro, entós procesar como si esistieren nel archivu del códigu fonte orixinal (incluyendo, en dellos ensambladores, la espansión de cualesquier macro qu'esista nel testu de reemplazu).
Yá que les macros pueden tener nomes curtios pero espandir a delles, o ello ye que munches llinies de códigu, pueden usase pa faer que los programes en llinguaxe ensamblador paezan ser muncho más curtios, riquiendo menos llinies de código fuente, como asocede colos llinguaxes d'altu nivel. Tamién pueden usase p'añedir niveles d'estructura más altos a los programes ensamblador; opcionalmente introducen código de depuración empotráu vía parámetro y otres carauterístiques similares.
Munchos ensambladores tienen macros incorporaes (o predefinidas) pa les llamaes de sistema y otres secuencies especiales de códigu, tales como la xeneración y l'almacenamientu de los datos realizaos al traviés d'avanzaes operaciones bitwise y operaciones booleanas usaes en xuegos, software de seguridá, xestión de datos y criptografía.
Los macro ensambladores de cutiu dexen a les macros tomar parámetros. Dellos ensambladores inclúin llinguaxes macro bien sofisticaos, incorporando elementos de llinguaxes d'altu nivel tales como parámetros opcionales, variables simbóliques, condiciones, manipulaciones de strings, operaciones aritmétiques, toos usables mientres la execución d'una macro dada, y dexando a les macros guardar el contestu o intercambiar información. Asina una macro puede xenerar un gran númberu d'instruiciones o definiciones de datos en llinguaxe ensamblador, basaes nos argumentos de la macro. Esto podríase usar pa xenerar, por casu, estructures de datos d'estilu de récor o bucles "desenrollados", o podría xenerar algoritmos enteros basaos en parámetros complexos. Una organización, usando llinguaxe ensamblador, que foi fuertemente estendíu usando tal suite de macros, pue ser considerada que se ta trabayando nun llinguaxe d'altu nivel, yá que tales programadores nun tán trabayando colos elementos conceptuales de más so nivel del ordenador.
Les macros usar p'afaer sistemes de software de gran escala pa veceros específicos na era del mainframe, y tamién s'usaron pol personal del veceru pa satisfaer les necesidaes de los sos patrones faciendo versiones específiques de los sistemes operativos del fabricante. Esto foi fechu, por casu, polos programadores de sistema que trabayaben col Conversational Monitor System / Virtual Machine (CMS/VM) de IBM y colos complementos real time transaction processing de IBM, CICS, Customer Information Control System, el airline/financial system qu'empezó nos años 1970 ya inda cuerre con munchos sistemes de reservaciones computarizados (CRS) y sistemes de tarxeta de creitu de güei.
Tamién ye posible usar solamente les habilidaes de procesamientu de macros d'un ensamblador pa xenerar códigu escritu en llinguaxes dafechu distintos. Por casu, pa xenerar una versión d'un programa en COBOL usando un programa macro ensamblador puru conteniendo llinies de códigu COBOL dientro d'operadores de tiempu ensamblaxe dando instruiciones al ensamblador pa xenerar códigu arbitrariu.
Esto yera porque, como nos años 1970 foi reparáu, el conceutu de "procesamientu de macro" ye independiente del conceutu de "ensamblaxe", siendo l'anterior, en términos modernos, más un procesamientu de testos, qu'una xeneración de códigu oxeto. El conceutu de procesamientu de macro apaeció, y apaez, nel llinguaxe de programación C, que soporta "instruiciones de preprocesador" d'afitar variables, y fai pruebes condicionales nos sos valores. Repare qu'a diferencia de ciertos macroprocesadores previos dientro de los ensambladores, el preprocesador de C nun ye Turing-completu porque escarecía de la capacidá de bucle o go to, esto últimu dexando a los programes faer bucles.
A pesar del poder del procesamientu macro, ésti dexó d'usase en munchos llinguaxes d'altu nivel (una importante esceición ye C/C++) ente que siguía siendo perenne pa los ensambladores. Esto yera porque munchu programadores taben bastante confundíos pola sustitución de parámetros macro y nun estremaben la diferencia ente procesamientu macro, l'ensamblaxe y l'execución.
La sustitución de parámetros macro ye puramente por nome: nel tiempu de procesamientu macro, el valor d'un parámetru ye sustituyíu textualmente pol so nome. La clase más famosa d'Error de software resultantes yera l'usu d'un parámetru qu'en sí mesmu yera una espresión y non un nome primariu cuando l'escritor macro esperaba un nome. Nel macro:
la intención yera que la rutina que llama apurriría'l nome d'una variable, y la variable o constante "global b" sería usada pa multiplicar a "a". Si foo llamar col parámetru, asocede la espansión macro. Pa evitar cualesquier posible ambigüedá, los usuarios de macro procesadores pueden zarrar en paréntesis los parámetros formales dientro de les definiciones de macros, o les rutines que llamen pueden envolubrar en paréntesis los parámetos d'entrada. Asina, el macro correutu, colos paréntesis, sería:
y la so espansión, daría como resultáu:
El PL/I y el C/C++ ufierten macros, pero la esta facilidá solo puede manipoliar testu. Per otra parte, los llinguaxes homoicónicos, tales como Lisp, Prolog, y Forth, retienen el poder de los macros de llinguaxe ensamblador porque pueden manipoliar el so propiu códigu como datos.
Soporte pa programación estructurada
Un interesáu diseñu foi A-natural, un ensamblador "empobináu a la corriente" (stream-oriented) pa los procesadores 8080/Z80 de Whitesmiths Ltd. (desarrolladores del sistema operativu Idris, similar al Unix), y lo que foi reportáu como'l primera compilador C comercial). El llinguaxe foi clasificáu como un ensamblador, porque trabayaba con elementos de máquina crudos tales como opcodes, rexistros, y referencies de memoria; pero incorporaba una sintaxis d'espresión pa indicar l'orde d'execución. Los paréntesis y otros símbolos especiales, xunto con construcciones de programación estructurada empobinaes a bloques, controlaben la secuencia de les instruiciones xeneraes. A-natural foi construyíu como'l llinguaxe oxeto d'un compilador C, en cuenta de la codificación manual, pero la so sintaxis lóxica ganó dellos siguidores.
Hubo poca demanda aparente pa ensambladores más sofisticaos por cuenta de la declinación del desenvolvimientu de llinguaxe ensamblador de llarga escala. A pesar d'eso, inda se tán desenvolviendo y aplicando en casos onde les llimitaciones de recursos o les particularidaes na arquiteutura de sistema oxetivu previenen l'efeutivu usu de llinguaxes d'altu nivel.
Perspeutiva histórica
Los llinguaxes ensambladores fueron primeru desenvueltos nos años 1950, cuando fueron referíos como llinguaxes de programación de segunda xeneración. Por casu, el SOAP (Symbolic Optimal Assembly Program) yera un llinguaxe ensamblador de 1957 pal ordenador IBM 650. Los llinguaxes ensambladores esaniciaron muncha de la propensión a errores y del consumu de tiempu de la programación de los llinguaxes de primer xeneración, que se precisaba colos primeros ordenadores, lliberando a los programadores de l'aburrición tal como recordar códigos numbéricos y cálculu de direiciones. Una vegada fueron llargamente usaos pa tou tipu de programación. Sicasí, pelos años 1980 (1990 nos microcomputadores), el so usu fuera en gran parte suplantáu polos llinguaxes d'altu nivel, na busca d'una ameyorada productividá en programación. Anguaño, anque'l llinguaxe ensamblador ye casi siempres remanáu y xeneráu polos compiladores, inda s'usa pa la manipulación direuta del hardware, accesu a instruiciones especializaes del procesador, o pa resolver problemes de desempeñu críticu. Los usos típicos son controladores/manejadores (drivers) de dispositivu, sistemes enfiñíos de baxu nivel, y sistemes de tiempu real.
Históricamente, un gran númberu de programes fueron escritos dafechu en llinguaxe ensamblador. Los sistemes operativos fueron casi puramente escritos en llinguaxe ensamblador hasta l'aceptación amplia del llinguaxe de programación C nos años 1970 y principios de los 1980. Tamién, munches aplicaciones comerciales fueron escrites en llinguaxe ensamblador, incluyendo una gran cantidá del software escritu por grandes corporaciones pa mainframes de IBM. Los llinguaxes COBOL y FORTRAN eventualmente movieron enforma d'esti trabayu, anque un númberu d'organizaciones grandes caltuvieren les infraestructures d'aplicaciones en llinguaxe ensamblador hasta bien entraos los años 1990.
La mayoría de los primeres microcomputadores confiaron nel llinguaxe ensamblador codificado a mano, incluyendo la mayoría de los sistemes operativos y de les aplicaciones grandes. Esto yera porque estos sistemes teníen llimitaciones severes de recursos, impunxeron idiosincrátiques arquitectures de memoria y de pantalla, y apurrieron servicios de sistema llindaos y con errores. Quiciabes más importante yera la falta de compiladores de primer clase de llinguaxes d'altu nivel fayadizos pal usu nel microcomputador. Un factor psicolóxicu tamién pudo xugar un papel: la primer xeneración de programadores de los microcomputadores caltuvo una actitú d'aficionáu de "alambres y alicates".
Nun contestu más comercial, les más grandes razones pa usar el llinguaxe ensamblador yera faer programes con mínimu tamañu, mínima sobrecarga, mayor velocidá y confiabilidad.
Los típicos exemplos de programes grandes en llinguaxe ensamblador d'esi tiempu son los sistemes operativos IBM PC DOS y aplicaciones tempranes tales como la fueya de cálculu Lotus 1-2-3, y casi tolos xuegos populares pa la familia Atari 800 d'ordenadores personales. Inclusive nos años 1990, la mayoría de los videoxuegos de consola fueron escritos n'ensamblador, incluyendo la mayoría de los xuegos pa la Mega Drive/Genesis y el Super Nintendo Entertainment System. Según dellos insiders de la industria, el llinguaxe ensamblador yera'l meyor llinguaxe de programación a usar pa llograr el meyor desempeñu del Sega Saturn, una consola pa la cual yera notoriamente griespa desenvolver y programar xuegos. El popular xuegu d'arcade NBA Jam (1993) ye otru exemplu. L'ensamblador foi por llargu trechu, el llinguaxe de desenvolvimientu primariu nos ordenadores llariegos Commodore 64, Atari ST, según el ZX Spectrum. Esto foi asina en gran parte porque los dialeutos del BASIC nestos sistemes ufiertaron insuficiente velocidá d'execución, según insuficientes carauterístiques p'aprovechar dafechu'l hardware disponible. Dellos sistemes, más notablemente l'Amiga, inclusive tienen IDEs con carauterístiques de depuración y macros altamente avanzaos, tales como'l freeware ASM-One assembler, comparable a les del Microsoft Visual Studio (el ASM-Unu preciede al Microsoft Visual Studio).
L'ensamblador pal VIC-20 foi escritu por Don French y publicáu por French Silk. Con 1639 bytes de llargor, el so autor cree que ye'l más pequeñu ensamblador simbólicu enxamás escritu. L'ensamblador soportaba'l direccionamientu simbólicu avezáu y la definición de cadenes de calteres o cadenes hexadecimales. Tamién dexaba espresiones de direiciones que podíen combinase coles operaciones d'adición, sustraición, multiplicación, división, AND lóxicu, OR lóxicu, y exponenciación.
Usu actual
Siempres hubo alderiques sobre la utilidá y el desempeñu del llinguaxe ensamblador relativu a llinguaxes d'altu nivel. El llinguaxe ensamblador tien nichos específicos onde ye importante (ver embaxo). Pero, polo xeneral, los modernos compiladores de optimización pa traducir llinguaxes d'altu nivel en códigu que puede correr tan rápido como'l llinguaxe ensamblador escritu a mano, a pesar de los contraejemplos que pueden ser atopaos. La complexidá de los procesadores modernos y del subsistema de memoria fai la optimización efeutiva cada vez más difícil pa los compiladores, según pa los programadores n'ensamblador. Adicionalmente, y pa la consternación de los amantes de la eficiencia, el desempeñu cada vez mayor del procesador significó que la mayoría de los CPU tean sacupaos la mayor parte del tiempu, con retardos causaos por embotellamientos predecibles tales como operaciones de entrada/salida y paxinación de memoria. Esto fizo que la velocidá d'execución cruda del códigu nun sía un problema pa munchu programadores.
Hai delles situaciones nes cualos los profesionales pudieren escoyer utilizar el llinguaxe ensamblador. Por casu cuando:
Nun esiste nengún llinguaxe d'altu nivel, nun procesador nuevu o especializáu, por casu Faise inxeniería inversa en binarios esistentes que pueden o nun ser escritos orixinalmente nun llinguaxe d'altu nivel, por casu al crackear la proteición anticopia del software propietariu.
Sicasí, el llinguaxe ensamblador ye inda enseñáu na mayoría de los programes de ciencies de la computación y inxeniería electrónica. Anque anguaño, pocu programadores trabayen regularmente col llinguaxe ensamblador como una ferramienta, los conceutos fundamentales siguen siendo bien importantes. Tales tópicos fundamentales, como aritmética binaria, asignación de memoria, procesamientu del stack, codificación de conxuntu de calteres, procesamientu d'interrupciones, y diseñu de compiladores, seríen duros d'estudiar en detalle ensin la comprensión de cómo'l ordenador opera a nivel del hardware. Yá que el comportamientu del ordenador ye fundamentalmente definíu pol so conxuntu d'instruiciones, la manera lóxica d'aprender tales conceutos ye estudiar un llinguaxe ensamblador. La mayoría de los ordenadores modernos tienen un conxuntu d'instruiciones similares. Poro, estudiar un solu llinguaxe ensamblador ye abondu p'aprender: i) los conceutos básicos; ii) reconocer situaciones onde l'usu de llinguaxe ensamblador pue ser apropiáu; y iii) ver cómo'l códigu ejecutable eficiente pue ser creáu polos llinguaxes d'altu nivel
Aplicaciones típiques
El llinguaxe ensamblador hard-coded ye típicamente usáu nel ROM d'arranque del sistema (BIOS nos sistemes compatible IBM PC). Esti códigu de baxu nivel ye usáu, ente otres coses, pa inicializar y probar el hardware del sistema antes de cargar el sistema operativu, y ta almacenáu nel ROM. Una vegada que tomó llugar un ciertu nivel de inicialización del hardware, la execución tresferir a otru códigu, típicamente escritu en llinguaxes d'altu nivel; pero'l códigu corriendo darréu dempués de que ye aplicada la enerxía usualmente ta escritu en llinguaxe ensamblador. Lo mesmo ye ciertu pa los boot loaders.
Munchos compiladores traducen llinguaxes d'altu nivel a llinguaxe ensamblador primeru, antes de la compilación completa, dexando que'l códigu n'ensamblador sía vistu pa propósitos de depuración y optimización. Llinguaxes de relativu baxu nivel, como C, con frecuencia aproven sintaxis especial pa empotrar llinguaxe ensamblador en cada plataforma de hardware. El códigu portable del sistema entós puede usar estos componentes específicos a un procesador al traviés d'una interface uniforme.
El llinguaxe ensamblador tamién ye pervalible n'inxeniería inversa, yá que munchos programes solamente son distribuyíos nuna forma de códigu de máquina. El códigu de máquina ye usualmente bono de treslladar escontra llinguaxe ensamblador pa depués ser curioso esamináu nesta forma, pero ye bien malo de treslladar escontra un llinguaxe d'altu nivel. Ferramientes como Interactive Disassembler, faen usu estensu del desensamblador para tales propósitos.
Detalles adicionales
Pa un determináu ordenador personal, mainframe, sistema empotráu, y consola de xuegos, tantu del pasáu como del presente, foi escritu siquier unu, y posiblemente docenes de ensambladores. Pa dellos exemplos, vea la llista de ensambladores.
Dientro de los grupos de procesadores, cada ensamblador tien el so propiu dialeutu. Dacuando, dellos ensambladores pueden lleer el dialeutu d'otru, por casu, TASM puede lleer el vieyu códigu del MASM, pero non al aviesu. FASM y NASM tienen una sintaxis similar, pero cada unu soporta distintos macros que pueden ser malo de treslladar d'unu al otru. Les coses básiques son siempres les mesmes, pero les carauterístiques avanzaes van ser distintes
Tamién, los llinguaxes ensambladores dacuando pueden ser portables al traviés de distintos sistemes operativos nel mesmu tipu de CPU. Les convenciones de llamaes ente los sistemes operativos con frecuencia difieren llixeramente o en nada. y con cuidu ye posible ganar portabilidad nel llinguaxe ensamblador, usualmente al enllazar con una biblioteca de llinguaxe C que nun camuda ente sistemes operativos. Un simulador de conxuntu d'instruiciones (qu'idealmente sería escritu en llinguaxe ensamblador) puede, en teoría, procesar el códigu oxeto/binariu de cualesquier ensamblador) pa llograr la portabilidad inclusive al traviés de plataformes (con una sobrecargue non mayor que la d'un interpretador de bytecode típicu). Esto ye esencialmente lo que llogra'l microcódigo cuando una plataforma de hardware camuda internamente.
Por casu, munches coses en libc dependen del preprocesador pa faer, al programa antes de compilar, coses que son específiques del sistema operativu o específiques del C. Ello ye que delles funciones y símbolos nin siquier tán garantizaos qu'esistan fuera del preprocesador. Peor entá, el tamañu y l'orde de los campos de les estructures, tanto como'l tamañu de ciertes typedefs como off_t, nun tán disponibles en llinguaxe ensamblador ensin l'ayuda d'un script de configuración, y difieren inclusive ente versiones de Linux, faciendo imposible portar llamaes de funciones en libc distintes de los que tomen simples enteros o piqueros como parámetros. Pa remanar estos problemes, el proyeutu FASMLIB aprove una biblioteca de llinguaxe ensamblador portable pa les plataformes Win32 y Linux, pero inda ta bien incompleta.
Dellos llinguaxes de bien altu nivel, como C y Borland/Pascal, soporten ensamblado en llinia, onde relativamente seiciones curties de códigu n'ensamblador puede ser empotraes dientro del códigu del llinguaxe d'altu nivel. El llinguaxe Forth comúnmente contién un ensamblador usáu pa codificar pallabres.
La mayoría de la xente usa un emulador para depurar los sos programes en llinguaxe ensamblador.
Exemplu pa l'arquiteutura x86
El siguiente ye un exemplu del programa clásicu Hola mundu escritu pa l'arquiteutura de procesador x86 (sol sistema operativu DOS).
.
Exemplu pal ordenador virtual (POCA)
Una seleición d'instruiciones pa un ordenador virtual ) coles correspondientes direiciones de memoria nes que se van allugar les instruiciones. Estes direiciones NUN son estátiques. Cada instruición acompañar del códigu en llinguaxe ensamblador xeneráu (códigu oxeto) que coincide cola arquiteutura d'ordenador virtual, o conxuntu d'instruiciones ISA.
Exemplu pal µC Intel 8051
Códigu en llinguaxe ensamblador para µC Intel 80C51:
Exemplu pal Microchip PIC16F84
Códigu en llinguaxe ensamblador pal microcontrolador 16F84 de Microchip:
Ver tamién
Ensambladores
Desensambladores
Depuradores
Otros
Sistemes operativos escritos dafechu en assembler:
Bibliografía
Also available online Website Draft versions available online as PDF and HTML
Enllaces esternos
Computer-Books.us, Online Assembly Language Brooks
Serena
Les serenes (en griegu antiguu: Σειρήν Seirến, ‘les qu'arreyen/encadenen’, quiciabes rellacionáu col persa Sir, ‘cantar’, y col sánscritu Kimaira, ‘quimera’) son criatures marines mitolóxiques pertenecientes a les lleendes y al folclor. miniaturadeimagen|Figura antropomorfa creada a partir d'una [[Rajiformes|raya disecada y recortada. Muséu de Mashhad, (Irán).]] Orixinalmente, na Antigüedá clásica, representar como seres híbridos con cara o torso de muyer y cuerpu d'ave (similares al Ba de la mitoloxía exipcia) qu'habitaben nuna islla predresa; a partir de la Edá Media adquirieron apariencia pisciforme: formoses muyeres con cola de pexe en llugar de piernes que moraben nes fondures. En dambos casos atribuyíase-yos una irresistible voz melodiosa cola qu'atraíen fatalmente a los marineros. Por cuenta de esa doble forma con que se presentaron a lo llargo de la historia, munches llingües non llatines estremen la serena clásica muyer-ave (inglés siren, alemán Sirene) de la serena con cola de pez (inglés mermaid, alemán Meerjungfrau), tratándose de fechu de dos criatures distintos.
Serenes na mitoloxía griego y romano
left|thumb|150 px|Estatua funeraria de serena, c. [[370 e.C.|370 e. C., Muséu Arqueolóxicu Nacional d'Atenes.]] thumb|125px|Miniatura [[Rusia|rusa del sieglu X na qu'apaez una serena representada a la manera de l'Antigua Grecia, con cuerpu d'ave y cara de muyer.]] Nel marcu de la mitoloxía clásica, les serenes son criatures llixeramente difuses debíu a la remota fonderada del so orixe, probablemente amestáu al mundu de los muertos. Trátase de seres con cuerpu de páxaru y cara o torso de muyer, posesores d'una voz musical maraviosamente curiosa ya hipnótica cola qu'embruxaben a los navegantes que pasaben xunto a les sos mariñes y conducir a la muerte. La tradición facer habitar nuna islla predresa del Mediterraneu frente a Sorrento, na mariña de la Italia meridional (n'ocasiones identificada cola islla de Capri).