Vita:Assembly

Legutóbb hozzászólt Szalakóta 8 évvel ezelőtt a(z) assembly nem programozási nyelv témában
Ez a szócikk témája miatt az Informatikai műhely érdeklődési körébe tartozik.
Bátran kapcsolódj be a szerkesztésébe!
Jól használható Ez a szócikk jól használható besorolást kapott a kidolgozottsági skálán.
Nagyon fontos Ez a szócikk nagyon fontos besorolást kapott a műhely fontossági skáláján.
Értékelő szerkesztő: Zafir (vita), értékelés dátuma: 2012. május 29.
Informatikai szócikkek Wikipédia:Cikkértékelési műhely/Index

Assembly iskolában, politikában, ...? Erről legalább pár szót írna az, aki betette, mert el nem tudom képzelni, hogy miről van szó; nem tudok ilyen magyar szavakról... --grin 2004 június 21, 17:39 (CEST)

Hát nem egészen... az EREDETI ANGOL WIki-ből vettem... de egyenlőre idő hiányában nem fejeztem be... see: http://en.wikipedia.org/wiki/Assembly- User:Peda [HUP WIKI http://www.hup.hu/wiki/wiki.phtml]
Érdemes odafigyelni azért, amikor "fordítasz" valamit: ha valaminek nincs értelme magyarul, akkor azt nem szabad egyszerűen lefordítani. Ha egyáltalán nincs értelme, akkor nem kell vele foglalkozni, ha pedig értelmes lehet úgy, hogy teljesen másképp fogalmazza az ember, akkor érdemes átírni. Egyáltalán nem kötelező semmit sem szó szerint átvenni.
Jelen esetben például ennek az "egyértelműsítő lapnak" nincs semmi értelme: a magyar nyelvben ezek a jelentések nem léteznek. --grin 2004 június 22, 12:19 (CEST)

DarkOne 2004 január 5, 22:20 (UTC)
gyanúsan ugyanonnét származik, ahonnét a "programnyelvek". ugyanaz a formátum mint ott volt. ha az törölve lesz, ennek is mennie kell.
Eegen... problemas eset. --grin 2004 január 10, 11:23 (UTC)

Bucka megjegyzése: Ha a gyanús tartalom szerzői jogokba ütközik, megértem. Egyébként idézőjelbe téve, a szerző illetve a mű megnevezésével használható tudtommal. Ha tévednék, igazítsatok helyre - lehetőleg a hivatkozott törvényből idézve! :)


gyanus tartalom:


Az Assembly-nyelv

  Az első programozási nyelv a gépi kód volt. Ennek a nyelvnek az utasításait a számítógép képes volt közvetlenül, minden átalakítás nélkül végrehajtani, értelmezni. (A legelső programot Ada Lovelace írta, s  alegelső programnyelv a mai assemby ősének tekinthető.)A problémákat nagyon precízen kellett megfogalmazni, lépésekre bontani. Emellett a nyelv erősen gépfüggő volt, hiszen minden gépen más és más utasításokat használt, az adott problémát minden géptípus esetén másképpen kellett leírni, megfogalmazni, alkalmazkodva a számolóegység sajátosságaihoz Hátrányai mellett néhány előnyt is meg kell említenünk:     A leggyorsabb programot eredményezi, mivel nem tartalmaz felesleges utasításokat. Az egyes utasítások egységes (egy vagy kétcímes) formában vannak leírva. Példa egy gép kódú utasításra: 0B0A 0C0E 0D00 (Az első négy helyen az utasítás, majd az első memóriacím, és ezt követi a második memóriacím.)  A gépi kódú lehetőségekhez képest komoly előrelépést jelentett az Assembly-nyelvek megjelenése, amelyek tulajdonképpen segédeszközt jelentettek a gépi kódú utasítások egyszerűbb megfogalmazásában. Az egyes gépi kódú utasításokhoz egy-egy mneomnikus kódot rendeltek hozzá, a tárcímeket pedig a memória kezdetéhez viszonyított relatív címekkel számították. Szintén újdonságnak számított, hogy az egyes memóriacímeket egy-egy szimbolikus névvel lehetett helyettesíteni. 
    Egy összeadás Assembly nyelven:
    ADD X, Y
    Az ADD szócska az összeadásra (addition) utal, az X és Y pedig memóriacímeket szimbolizálnak. Tehát az Assembly egy olyan alacsony szintű programozási nyelv, amelynél a művelet és a tárcím szimbolikusan megadható. Természetesen, ha egy Assembly-programot szeretnénk futtatni, azt mindig meg kell előznie egy átalakítási, fordítási műveletnek, amikor az Assembly-utasításokat gépi utasításokká alakítjuk át. A fordítóprogramok „compiler” típusúak voltak. Az Assembly legtöbb utasítása egyetlen gépi utasítást reprezentált, azaz az Assembly1:1 típusú nyelv. Volt néhány utasítás, amely több gépi kódú utasítást jelentett, ezeket makróknak nevezték. Az Assembly-nyelv a gépi kódú programozás után igen nagy előrelépést jelentett, általa sokkal kényelmesebbé vált a programfejlesztési munka. Napjainkra az alacsony szintű programozási nyelvek háttérbe szorultak. Az Az Assembly jellemzői:

Szegmentált memóriacímzés

 Operatív memória nélkül nem tudunk programokat futtatni egy Neumann-architektúrájú (tárolt programú) számítógépen - valamilyen módon tehát a memóriát el kell érnünk, hogy oda programokat töltsünk be. A memóriához való hozzáférés, mint tevékenység két fázisra osztható: 1; a címzés, ekkor meghatározzuk, milyen memóriacímre (cellaként, rekeszként lehet elképzelni) vagyunk kíváncsiak 2; operáció: az adott címre beírunk vagy onnan kiolvasunk egy adatot. 
 Ahhoz, hogy beírjunk egy értéket, tudnunk kell, mekkora helyet foglal a memóriában. Általában véve számértékekben kell gondolkodni, mást ugyanis a digitális gépek nem ismernek. 

Regiszterek kezelése

Ismert, hogy a regiszterek a processzor futási környezetét alkotják. Hogyan tudjuk feltölteni a regisztereket értékekkel? Egy ilyen feltöltést (adat-) mozgatásnak hívunk, és a MOV utasítást használjuk rá. Először meg kell nevezni az adott regisztert és megmondani, hogy milyen értékkel akarjuk feltölteni.

 Említettem négy általános célú regisztert. Ezek a regiszterek az EAX, EBX, ECX és az EDX. A jelölés értelme a következő: hajdanában-danában az Intel regiszterek 16 bitesek voltak, de 80386 óta 32 bitesek, ez egy kiterjesztés (Extension), ezt jelzi az E betű a regiszterek előtt. Az általános célt a matematikában is használt X, mint változó jelöli. Nem teljesen igaz azonban, hogy mind a négy regiszter általános célú. Valójában az első az, amivel a legtöbb műveletet szokás végezni - ez a legkézreállóbb regiszter: az EAX. A következő a Bázisregiszter (innen a B betű), ezt címzéseknél fogjuk használni. A harmadik a Ciklusregiszter (innen a C betű), az utolsó pedig adatátvitelre (pl osztás maradéka) használatos (Data: innen a D betű). 
 A régi programokkal és címzésekkel való kompatibilitás miatt megtartották a 16 bites elnevezéseket is, vagyis a valóságban (a hardware-ben) ugyan nem létezik, de nyelvi elemként megmaradt az AX, BX, CX, DX regiszter is - és a későbbiekben ez igaz lesz az indexregiszterekre is. 



Ugrás és hívás


Az ugrás olyan tevékenység, amellyel a processzor utasításszámlálóját nem a programban soron következő utasításra, hanem egy távolabbi pontra állítjuk. A hívás egy olyan ugrás, amely lehetőséget ad arra, hogy visszatérjünk a kiindulópontba


Feltételek kiértékelése


 Az Assembly alacsony szintű nyelvcsalád. Magas szintű nyelvekben, melyekben "emberi jellegű szavakkal és kifejezésekkel" tudjuk megfogalmazni a programban végrehajtandó tevékenységeket, a feltételek kiértékelését az "if" utasítás végzi. 

Ciklusok

Akkor szoktunk ciklusokat szervezni, ha van egy tevékenységük és az sokszor kell elvégezni. Beszélünk determinisztikus és nem determinisztikus ciklusokról. A determinisztikus ciklust iterációnak hívjuk, ebben az esetben tudjuk, hogy egy adott tevékenységet hányszor kell elvégezni. Magas szintű nyelvekben ezt "for" ciklusnak hívják. Például egy memóriaterület első három bájtját fel kell tölteni 0xAA értékkel. Az Intel Assembly-ben ez úgy kényelmes, hogy megadjuk a feltöltendő memóriacím szegmenscímét és az azon belüli indexet, majd egy tároló utasítást ciklikusan végrehajtunk.



Tömbök


 A tömb azonos típusú elemekből álló, soros adatcsoport. Amennyiben hossza előre ismert, statikus tömbnek nevezik, ha hossza a program futása során (run time) változik, dinamikus tömbnek, vagy listának nevezzük. Mi ebben a jegyzetben a statikus tömbökke foglalkozunk. A tömböknek több dimenziója is lehet, ez alapján tudunk belőlük kijelölni egy adott elemet. Ezt a kijelölést hívjuk indexelésnek, a jelölő dimenziók értékét pedig - mi másnak, mint - indexnek. 



Lásd még: IA-32 IA-64 Az assemblers-lista. Külső linkek: Források, könyvek, weblapok, híroldalak és IRC-cstornák listája

  • Az előnyök/hátrányok rész átírva

assembly nem programozási nyelv

szerkesztés

Az egyszer rendben van, hogy angolul "assembly language"-nek van nevezve, de abban a kifejezésben nincs benne hogy programozási nyelv. Az assembly az csak a gépi kód az emberek által értelmezhető formában. Nem programozási nyelv. Az hogy MOV, ADD, CMP, JMP vagy hasonló szavak vannakm benne az csak azért van, hogy ne bitsorozatokat kelljen az embernek begépelni.

fordítás folyamata: Magas szintű nyelv (C++, ADA, stb) => fordítóprogram (g++, gnat, stb) => Assembly forráskód (*.asm kiterjesztésű állományok) => assembler (g++, gas, nasm, stb) => tárgykód (*.o kiterjesztés) => szerkesztő (pl gcc) => futtatható állomány

Bucka megjegyzése: A fenti szöveg írója, feltételezem, nem programozott Commodore gépcsaládon, vagy Sinclair gépeken. Ott három módszer volt használható: interpretált BASIC - hátránya: program futása lassú volt - továbbá gépi kód, illetve assembly. Nem létezett külön tárgykód, a program közvetlenül a memóriába lett fordítva. A gépek memóriamérete, illetve a háttértárak korlátozottsága nem is tette volna lehetővé C nyelv és standard C könyvtár használatát. Commodore-16 16KB memóriával rendelkezett, 32KB ROM-ja - melynek kb felét a BASIC interpreter tette ki - tartalmazta az "operációs rendszerét" . Háttértárként egyoldalas floppyt - kétoldalas floppy használatához meg kellett fordítani(!) a lemezt a meghajtóban - vagy magnókazettát használtak. Egy nyelv, amit programozásra használnak, nem beszélt nyelv, az programozási nyelv. (Megj: Commodore 16, Commodore 116 illetve Commodore +4 ugyan tartalmazott beépített assemblert, a memóriacímeket még ezzel is számolgatni kellett!)

Bucka: Megjegyzésed betéve a cikk bevezetőjébe. Szalakóta vita 2016. január 24., 12:05 (CET)Válasz

HLA létezése

szerkesztés

A HLA létezése angol nyelvű lapon is vitatott. A hivatkozás fals oldalra mutat.Bucka vita 2011. november 16., 18:06 (CET)Válasz

Visszavonva. Vagy a honlap készült el, vagy a linket cseréltétek le egy helyesre.

Visszatérés a(z) „Assembly” laphoz.