Co je jazyk shromáždění?

Někdy odkazoval se na jak shromáždění nebo ASM, jazyk shromáždění je nízkoúrovňový programovací jazyk.

Programy napsané v montážních jazycích sestavuje assembler. Každý assembler má svůj vlastní montážní jazyk, který je určen pro jednu specifickou architekturu počítače.

Strojový jazyk je jen řada čísel, která není pro lidi snadné číst. Pomocí ASM mohou programátoři psát programy čitelné lidským jazykem, které odpovídají téměř přesně jazyku stroje.

Nevýhodou je, že vše, co počítač dělá, musí být explicitně popsáno, přesně a detailně. Výhodou je, že programátor má maximální kontrolu nad tím, co počítač dělá.

Proč je ASM jazyk s nízkou úrovní?

Shromáždění se nazývá nízkoúrovňový programovací jazyk, protože existuje (téměř) vztah mezi tím, co říká počítači, a tím, co počítač dělá. Obecně jeden řádek montážního programu obsahuje maximálně jednu instrukci pro počítač.

Jak se liší ASM od jazyka „na vysoké úrovni“?

Jazyky na vysoké úrovni poskytují abstrakce operací na nízké úrovni, které umožňují programátorovi zaměřit se více na popis toho, co chtějí dělat, a méně na to, jak by se to mělo dělat . Programování tímto způsobem je pohodlnější a usnadňuje čtení programů při obětování kontroly na nízké úrovni.

Programy napsané ve vyšších jazycích nebudou nikdy odpovídat rychlosti a efektivitě programů napsaných v sestavách. Mezi příklady jazyků na vysoké úrovni patří Python, Java, JavaScript, Clojure a Lisp.

Co je jazyk střední úrovně?

Jazyky střední nebo nižší úrovně poskytují některé abstrakce na vysoké úrovni, které usnadňují život programátorům a zároveň poskytují přístup k nízkoúrovňovým operacím. Oni jsou často používáni psát operační systémy, tak oni jsou někdy nazýváni systémovými programovacími jazyky .

Programy napsané ve středních jazycích mohou fungovat také nebo téměř stejně jako programy napsané v jazyce sestavení. Příklady středně pokročilých programovacích jazyků zahrnují C, C + +, Ada, Nim a Rust.

Je ASM přenosný?

Ne. Protože montážní jazyky jsou vázány na jednu konkrétní architekturu počítače, nejsou přenosné. Program napsaný v jednom montážním jazyce by musel být kompletně přepsán, aby mohl běžet na jiném typu stroje.

Přenositelnost je jednou z hlavních výhod jazyků vyšší úrovně. C programovací jazyk je často nazvaný “přenosná montáž” protože C kompilátory existují pro téměř každou moderní architekturu systému. Program napsaný v jazyce C může vyžadovat určité změny, než bude kompilován na jiném počítači, ale základní jazyk je přenosný.

Obecně řečeno, jazyk vyšší úrovně je, tím méně změn musí být provedeno, aby mohlo běžet na jiné architektuře. Nejnižší úroveň jazyků - strojový jazyk a jazyk montáže - nejsou přenosné.

Příklad: Dobrý den, Svět! v 32bitové sestavě, pro Windows

Zde je napsáno "Ahoj, Svět" pro 32bitový procesor Intel. Spustí se také na 64bitovém procesoru. Kompilováme a spustíme na Windows 10.

 global _main extern _printf section .text _main: push message call _printf přidat esp, 4 ret message: db 'Hello, World!', 10, 0 

Chcete-li začít, otevřete Poznámkový blok. Zkopírujte a vložte kód výše do nového textového souboru a uložte soubor jako hello.asm .

Pro sestavení sestavy použijeme NASM, Netwide Assembler. To lze stáhnout na adrese http://www.nasm.us/.

 nasm -f win32 hello.asm 

Po spuštění tohoto příkazu vytvoří NASM soubor objektu. Soubor objektu obsahuje strojový kód, ale není to zcela spustitelný soubor. Náš objektový soubor se nazývá hello.obj .

Pro vytvoření spustitelného souboru použijeme 32-bitovou verzi MinGW (Minimal GNU for Windows), která bude poskytovat překladač gcc. To lze stáhnout na adrese http://www.mingw.org/.

 gcc -o hello.exe hello.obj 
 Ahoj 
 Ahoj světe! 

Příklad: Dobrý den, Svět! v 64bitové sestavě, pro Linux

Zde je "Hello, World" napsaný pro 64bitový procesor Intel. Kompilováme a spustíme na 64bitovém Linuxu.

 extern printf; funkce C printf, která má být nazývána sekcí .data; Datová sekce, inicializované proměnné msg: db "Hello, world!", 0; Řetězec C končí hodnotou 0 fmt: db "% s", 10, 0; Formát printf, "n", oddíl "0" .text; Začátek sekce kódu globální hlavní; standardní vstupní bod gcc:; označení programu pro vstupní bod push rbp; nastavit rámec zásobníku, musí být zarovnán pohyb rdi, fmt mov rsi, msg mov rax, 0; může být také: xor rax, rax call printf; Volání C printf funkce pop rbp; obnovit stack mov rax, 0; normální, žádná chyba, návratová hodnota ret; vrátit se 

Zkopírujte a vložte tento program do nového souboru s názvem hello.asm .

Poté sestavte sestavu s NASM, kterou můžete nainstalovat pomocí správce balíčků. Například v Ubuntu nebo Debianu můžete nainstalovat NASM pomocí apt:

 sudo apt update && sudo apt nainstalovat nasm 

Chcete-li vytvořit soubor objektu, spusťte tento příkaz:

 nasm -f elf64 hello.asm 

Soubor objektu se jmenuje hello.o .

Dále použijte gcc k propojení tohoto souboru objektů s nezbytnými knihovnami v počítači a zkompilováním do spustitelného souboru s názvem hello :

 gcc hello.o -o ahoj 

Nakonec spusťte spustitelný soubor:

 ./Ahoj 
 Ahoj světe! 

Pro informaci je to stejný program napsaný v jazyce C:

 #include int main () {char msg [] = "Hello world n"; printf ("% s n", msg); návrat 0; } 

  • Viz ladicí rutiny pro další příklady nízkoúrovňového montážního kódu a další informace o tom, co každá rutina provádí.
  • Další příklady jazyka sestav naleznete na webu Happy Codings.

2GL, Assembler, Nízkoúrovňový jazyk, Strojový jazyk, Programovací termíny