Jezik skupštine: Kako naučiti šifrirati skupštinu danas

Objava: Vaša podrška pomaže održavanju web mjesta! Naplaćujemo naknadu za preporuku za neke usluge koje preporučamo na ovoj stranici.


Sastavni jezik je programski jezik izrazito niske razine koji ima 1-na-1 korespondenciju sa strojnim kodom – nizom binarnih uputa koje premještaju vrijednosti u i iz registara u CPU (ili drugom mikroprocesoru).

Uvod

Mikroprocesor je mehanički kalkulator. Ima niz imenovanih registara koji su poput držanja olovke za brojeve. Dobija upute u obliku strojne šifre koja je predstavljena nizom binarnih bitova (1s i 0s). Na primjer, ovdje je redak strojne šifre:

10110000 01100001

Prvih nekoliko bita (10110) upute su za kopiranje vrijednosti u registar. Sljedeće tri znamenke (000) identificiraju registar u koji će se vrijednost kopirati. Ostatak (01100001) vrijednost je koju treba kopirati.

Naravno da je 10110 besmislen, a računalo ne “zna” da to znači “kopirati vrijednost”. Procesor je dizajniran tako da niz električnih impulsa predstavljenih sa 10110 (on-off-on-on) uzrokuje željeni rezultat. To je dio onoga što se podrazumijeva pod “mehanički”.

Ako želite napisati program za procesor koji se izvršava, možete zamisliti da bi pisanje tisuća redaka od 0 i 0 bilo zamorno i sklon greškama. Rješenje je jezik montaže. Sastavni jezik pruža razumljive zamjene za duge nizove binarnog koda.

Primjer

Na primjer, ako 10110 znači “pomaknite vrijednost”, mogli bismo je skratiti s naredbom MOV.

Mogli bismo također dati registru 000 lakše pamtiti ime (u ovom slučaju registar se zove AL).

Konačno, mogli bismo prikazati vrijednost u različitom brojevnom sustavu, kao što je decimalni (91) ili heksidacimalni (61). Ta bi linija tada bila MOV AL, 61. Kad se cijeli program napiše na ovaj način, montažer može lako prevesti svaki redak u odgovarajući binarni prikaz.

Računala rade (obavljaju proračune, premještaju podatke, transformiraju podatke), obrađujući milijarde ovih sitnih uputa u sekundi.

Vrlo jednostavne upute (premjestite ovu vrijednost, kopirajte tu vrijednost, dodajte ove dvije vrijednosti i spremite vrijednost tamo) kombiniraju se kako bi se formirale složene operacije, koje se kombiniraju na višim i višim razinama kako bi zapravo učinile stvari koje biste prepoznali kao smislene.

Jezični izvori skupštine

Internetski resursi

Vodiči i osnovni vodiči

  • Vodič za skupštinsko programiranje iz udžbenika

  • Programiranje jezika jezika X86, poglavlje iz Priručnika za programere FreeBSD-a, koje pomaže pisanje jezika montaže u kontekst razvoja operativnog sustava

  • Pozdrav za X64 Assembly, prilično nježan uvod u montažu, sa Code-a kao bloga Art

  • X86 Assembly Language Programming, drugi udžbenik koji jezik montaže dobro smješta u njegov programski kontekst za OS, ovaj u odnosu na Linux, Windows, pa čak i malo o Mac OS X

  • Jezik skupljanja računala, fokusiran je na 32-bitna računala s operativnim sustavom Linux, Windows ili FreeBSD

  • Vodič za skup X86 sa odjela za računarske znanosti Sveučilišta u Virginiji

  • Webster: obračunavajući se kao “Mjesto na internetu za učenje jezika montaže”, ovu stranicu (navodno) vodi autor knjige Umjetnost skupštine i izumitelj HLA

  • Vodič za montažu Linuxa

  • Lako X86-64

  • Skupština X86

  • Vodič za programiranje skupštine sustava Windows (pdf)

Video vodiči

  • Vodič za programiranje jezika skupštine, vrlo temeljita serija od 55 video zapisa o sastavljanju, slijedi knjigu K skupni jezik za procesore x86 (6. izdanje) Kip Irvine (ako ne pratite videozapise, vjerovatno ćete htjeti najnovije izdanje)

  • Video tečaj programiranja skupštinskog jezika, video-serija u 70 dijelova, koju predaje Arthur Griffith, koji ima vrlo šarmantan šarm

  • Assembly Language Intro, predavanje u predavaonici u Cornellu, predstavljajući skupštinski jezik

  • Programiranje jezika montaže, uvodni sat montaže i odličan format ako vam se stvarno svidjelo slijedeći primjere algebri na projektoru sa glavom u srednjoj školi (ovo je dio veće serije o mikroprocesorima i mikrokontrolerima).

upućivanje

  • Popisi uputa za X86, puni popis svih uputa za x86 arhitekture, s napomenama o tome kada je svaka dodana

  • X86 referenca za kôd i upute

  • Intel X86 skupa jezična varalica (pdf).

alat

Monitori okupljanja – na raspolaganju je puno okupljača – evo nekoliko najpopularnijih alata za skupljanje slobodnih i otvorenih izvora:

  • NASM

  • FASM

  • YASM

  • GASM.

IDE-ovi (integrirana razvojna okruženja):

  • SASM, Jednostavan crossplatform IDE za NASM, MASM, GAS, FASM jezike za sklapanje

  • Svježi IDE, IDE vizualnog jezika montaže s ugrađenim FASM alata

  • WinAsm Studio, besplatni IDE za razvoj 32-bitnih Windows i 16-bitnih DOS programa pomoću Assemblera

  • Vizualni MASM.

Zajednica i kontinuirano učenje

  • Skupština Forum na Dream.In.Code

  • MASM forum

  • Jezik montaže i strojni kod na Hack forumima

knjige

  • Umjetnost skupštinskog jezika (internetsko izdanje) jedna je od najpopularnijih knjiga o zbornom jeziku iz uvijek čitljivog No Starch Pressa; ovo će vam možda biti zanimljivo od istog autora: Write Great Code: Volume 1: Razumijevanje stroja i pisanje velikog koda, svezak 2: Razmišljanje na niskoj razini, pisanje na visokoj razini

  • Jezik montaže korak po korak: Programiranje s Linuxom

  • Jezik stručne skupštine

  • Jezik montaže za x86 procesore

  • Moderno programiranje jezika za montažu X86: 32-bitni, 64-bitni, SSE i AVX

  • ntrodukcija do 64-bitnog programskog sklopa za Linux i OS X: Treće izdanje – za Linux i OS X

  • Uvod u skupštinski jezik i računalnu arhitekturu 80X86

  • Programiranje jezika montaže: za PC i prijenosna računala.

Treba li naučiti skupštinski jezik?

Želite li naučiti jezik montaže, ovisi o vašim ciljevima. Za većinu programera odgovor je “ne”.

Dva su osnovna razloga za učenje jezika montaže: zato što ga želite izravno koristiti ili zato što želite razumjeti računala na temeljnoj razini.

S praktičnog stajališta, samo relativno šačica svjetskih inženjera i računalnih znanstvenika koristi jezik montaže.

Ogromna većina softverskog razvoja, uključujući gotovo sve razvoj aplikacija bilo koje vrste, koristi programske jezike visoke razine, a ne montažni kod. Neka specifična područja na kojima se koristi jezik montaže su:

  • Operativni sustavi

  • firmware

  • Upravljački uređaji

  • Dizajn jezika

  • Dizajn sastavljača

  • Ugrađeni sustavi

  • Dizajn hardvera

  • Napredna kriptografija

  • Teorijska informatika

Drugi razlog za učenje jezika montaže je samo bolje razumijevanje onoga što se zapravo događa duboko u utrobi računala. (Zbog toga gotovo sve diplome informatike moraju naučiti jezik montaže.)

Naravno, ako ste osoba koja vas to stvarno zanima, možda biste htjeli razmisliti o karijeri koja radi na razvoju sustava niske razine.

Ostale stvari za naučiti

Postoje neki jezici na kojima, ako znate samo malo, možete napraviti puno. Python i Ruby su takvi – možete naučiti dovoljno za vikend da napravite nešto vrijedno. Jezik skupštine nije takav.

Jezik za sklapanje nikada se ne koristi u vakuumu. Tip inženjera koji treba znati sastavljanje vjerovatno će raditi u onom području u kojem treba znati nekoliko drugih vještina da bi bio učinkovit. Oni vjerojatno uključuju:

  • Hardverski jezici, poput VHDL i Verilog, zajedno s dobrim razumijevanjem mikroprocesora i elektrotehnike

  • Jezici operacijskog sustava na niskoj razini poput C i njegovih derivata: C ++, C # i D

  • Naslijeđeni jezici poput Fortrana i Cobola

  • Jezici platforme kao što su Java i Objective-C

  • algoritmi

  • Sastavljač, prevoditelj i jezični dizajn.

Daljnje čitanje i izvori

Imamo puno više informacija o takvim stvarima, Programiranje: jezici, vremenska traka & vodiči.

Koji kôd treba naučiti?

Zbunjeni u koji programski jezik treba naučiti kodirati? Pogledajte našu infografiku. Koji kôd treba naučiti?

Ne samo da raspravlja o različitim aspektima jezika, već odgovara i na važna pitanja poput: “Koliko ću novca zaraditi programiranje Java za život?”

Koji kôd treba naučiti?
Koji kôd treba naučiti?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map