Mi az a közgyűlés nyelve?

Néha összeszerelésnek vagy ASM-nek is nevezik, az összeszerelési nyelv egy alacsony szintű programozási nyelv.

Az összeszerelő nyelveken írt programokat összeszerelő készíti. Minden szerelőnek saját összeszerelési nyelve van, amely egy adott számítógépes architektúra számára készült.

A gépi nyelv csak egy sor szám, amely az emberek számára nem könnyű olvasni. Az ASM használatával a programozók emberi olvasható programokat írhatnak, amelyek szinte pontosan megfelelnek a gépi nyelvnek.

Hátránya, hogy mindent, amit a számítógép csinál, pontosan, részletesen le kell írni. Ennek az az előnye, hogy a programozó maximális ellenőrzést gyakorol a számítógép működésére.

Miért az ASM "alacsony szintű" nyelv?

Az összeszerelést alacsony szintű programozási nyelvnek nevezzük, mert (közel) van egy-egy kapcsolat a mit csinál a számítógép számára, és mi a számítógép. Általában az összeszerelési program egy sora maximum egy utasítást tartalmaz a számítógép számára.

Hogyan különbözik az ASM a "magas szintű" nyelvtől?

A magas szintű nyelvek olyan alacsony szintű műveletekből álló absztrakciókat biztosítanak, amelyek lehetővé teszik a programozó számára, hogy jobban összpontosítson az általuk kívánt tevékenységekre, és kevésbé arra, hogy hogyan kell megtenni . Az ilyen módon történő programozás kényelmesebb, és a programok könnyebben olvashatók az alacsony szintű vezérlés áldozatul.

A magas szintű nyelveken írt programok soha nem egyeznek meg az összegyűjtött programok nyers sebességével és hatékonyságával. A magas szintű nyelvek példái közé tartozik a Python, a Java, a JavaScript, a Clojure és a Lisp.

Mi a "középszintű" nyelv?

A középszintű vagy alacsonyabb szintű nyelvek magas szintű absztrakciókat biztosítanak a programozó életének megkönnyítésére, miközben továbbra is hozzáférést biztosítanak az alacsony szintű műveletekhez. Gyakran használják az operációs rendszerek írására, így ezeket rendszerint programozási nyelveknek is nevezik.

A középszintű nyelveken írt programok akár összeszerelési nyelven írt programokként is működhetnek, akár csaknem. Példák a középszintű programozási nyelvekre: C, C ++, Ada, Nim és Rust.

Az ASM hordozható?

Mivel az összeszerelési nyelvek egy adott számítógép architektúrához vannak kötve, nem hordozhatóak. Egy összeszerelési nyelven írt programot teljesen újra kell írni, hogy egy másik géptípusra fusson.

A magasabb szintű nyelvek egyik fő előnye a hordozhatóság. A C programozási nyelvet gyakran "hordozható szerelvénynek" nevezik, mivel a C fordítók szinte minden modern rendszer architektúrára léteznek. A C-ben írt programhoz szükség lehet néhány változtatásra, mielőtt más számítógépen fordulna, de a központi nyelv hordozható.

Általánosságban elmondható, hogy a magasabb szintű nyelv, annál kevesebb változtatásra van szükség ahhoz, hogy egy másik architektúrán futhasson. A legalacsonyabb szintű nyelvek - gépi nyelv és összeszerelési nyelv - nem hordozhatóak.

Példa: Hello, World! 32 bites összeállításban, Windows rendszerben

Itt van egy "Hello, World", amely egy 32 bites Intel processzorra van írva. 64 bites processzoron is fut. Összeállítjuk és futtatjuk a Windows 10 rendszeren.

 globális _main extern _printf rész .text _main: push message call _printf add esp, 4 ret message: db 'Hello, World!', 10, 0 

Először nyissa meg a Jegyzettömb elemet. Másolja és illessze be a fenti kódot egy új szövegfájlba, és mentse el a fájlt hello.asm-ként .

Az összeszereléshez a NASM-t, a Netwide Assembler-t fogjuk használni. Letölthető a http://www.nasm.us/ címen.

 nasm -f win32 hello.asm 

A parancs futtatásakor az NASM objektumfájlt hoz létre. Az objektumfájl gépkódot tartalmaz, de nem egy futtatható fájl. Objektumfájlunk hello.obj .

A végrehajtható fájl létrehozásához a MinGW 32 bites verzióját (Minimális GNU for Windows) fogjuk használni, amely biztosítja a gcc fordítót. Letölthető a http://www.mingw.org/ címen.

 gcc -o hello.exe hello.obj 
 Szia 
 Helló Világ! 

Példa: Hello, World! 64 bites összeállításban, Linuxra

Itt van egy "Hello, World", amely egy 64 bites Intel processzorra van írva. 64 bites Linux-on fordítjuk és futtatjuk.

 extern printf; a C printf függvényt, melynek neve .data; Adatszakasz, inicializált változók msg: db "Hello, világ!", 0; C string 0 fmt: db "% s", 10, 0; A printf formátum, "n", "0" szekció. Kódszakasz kezdete globális fő; a standard gcc belépési pont fő:; a belépési pont rbp programcímkéje; állítsa be a veremkeretet, a mov rdi, fmt mov rsi, msg mov rax, 0; lehet: xor rax, rax hívás printf; Hívás C printf függvény pop rbp; visszaállítási verem, ra rax, 0; normál, nincs hiba, visszatérési érték ret; Visszatérés 

Másolja be és illessze be ezt a programot egy új, hello.asm nevű fájlba .

Ezután fordítsa össze a NASM-rel, amelyet a csomagkezelővel telepíthet. Például az Ubuntu vagy a Debian rendszeren telepítheti a NASM alkalmazást az apt segítségével:

 sudo apt update && sudo telepíti a nasmot 

Futtassa ezt a parancsot az objektumfájl létrehozásához:

 nasm -f elf64 hello.asm 

Az objektumfájl neve hello.o .

Ezután használja a gcc-t, hogy összekapcsolja ezt az objektumfájlt a szükséges könyvtárakkal a számítógépen, és fordítsa le egy hello-ra nevű végrehajtható fájlba.

 gcc hello.o -o hello 

Végül futtassa a futtatható fájlt:

 ./Szia 
 Helló Világ! 

Hivatkozásként ez ugyanaz a program, amelyet C-ben írtak:

 #include int main () {char msg [] = "Hello világ n"; printf ( "% s \ n", MSG); vissza 0; } 

  • Lásd a hibakeresési rutinokat az alacsony szintű összeszerelési kód más példáira és további információkra az egyes rutinokról.
  • Az összeszerelési nyelv további példáit lásd a Happy Codings weboldalán.

2GL, összeszerelő, alacsony szintű nyelv, gépi nyelv, programozási feltételek