Montāžas valoda: kā šodien iemācīties kodēt montāžu

Atklāšana: Jūsu atbalsts palīdz vietnei darboties! Mēs nopelnām nodošanas maksu par dažiem pakalpojumiem, kurus mēs iesakām šajā lapā.


Montāžas valoda ir ārkārtīgi zema līmeņa programmēšanas valoda, kurai ir viens pret vienu ar mašīnas kodu – bināro instrukciju sērija, kas pārvieto vērtības CPU (vai cita mikroprocesora) reģistros un ārpus tiem..

Ievads

Mikroprocesors ir mehānisks kalkulators. Tam ir vairāki nosaukti reģistri, kas ir kā skaitļu pildspalvas. Tas saņem instrukcijas mašīnu koda veidā, ko attēlo bināro bitu sērija (1s un 0s). Piemēram, šeit ir mašīna koda rinda:

10110000 01100001

Pirmie daži biti (10110) ir norādījums vērtības kopēšanai reģistrā. Nākamie trīs cipari (000) norāda reģistru, kurā vērtība tiks kopēta. Pārējā daļa (01100001) ir kopējamā vērtība.

Protams, 10110 ir bezjēdzīga, un dators “nezina”, ka tas nozīmē “vērtības kopēšana”. Procesors ir konstruēts tā, lai elektrisko impulsu sērija, ko attēlo 10110 (ieslēgts-ieslēgts-ieslēgts-izslēgts), rada vēlamo rezultātu. Šī ir daļa no tā, ko saprot ar “mehānisko”.

Tagad, ja jūs gatavojaties rakstīt programmu procesoram, kuru vēlaties izpildīt, varat iedomāties, ka tūkstošiem rindiņu ar 1 un 0 rakstīšana būtu garlaicīga un kļūdaina. Risinājums ir montāžas valoda. Montāžas valoda nodrošina cilvēkiem saprotamus binārā koda garu virkņu aizvietojumus.

Piemērs

Piemēram, ja 10110 nozīmē “vērtības pārvietošana”, tad mēs to varētu saīsināt ar komandu MOV.

Mēs arī varētu 000 reģistram dot vārdu, kas vieglāk iegaumējams (šajā gadījumā reģistra nosaukums ir AL).

Visbeidzot, vērtību mēs varētu atveidot citā numerācijas sistēmā, piemēram, decimāldaļās (91) vai heksimimālajā (61). Tad šī līnija būtu MOV AL, 61. Kad visa programma ir uzrakstīta šādā veidā, montētājs var viegli pārveidot katru rindu atbilstošā binārā attēlojumā.

Datori strādā (veic aprēķinus, pārvieto datus, pārveido datus), sekundē apstrādājot miljardus šo niecīgo instrukciju.

Ļoti vienkāršas instrukcijas (pārvietojiet šo vērtību, nokopējiet šo vērtību, pievienojiet šīs divas vērtības kopā un saglabājiet vērtību tur) apvieno, veidojot sarežģītas darbības, kuras apvieno augstākā un augstākā līmenī, lai faktiski veiktu lietas, kuras jūs atzītu par nozīmīgām.

Montāžas valodas resursi

Tiešsaistes resursi

Pamācības un pamata ceļveži

  • Montāžas programmēšanas apmācība no konsultāciju punkta

  • X86 montāžas valodas programmēšana, sadaļa no FreeBSD izstrādātāju rokasgrāmatas, kas palīdz salikt montāžas valodas rakstīšanu operētājsistēmas attīstības kontekstā

  • Sakiet sveicienu X64 asamblejā, diezgan saudzīgā ievadā par montāžu, no emuāra Code as Art

  • X86 Assembly Language Programming – vēl viena apmācība, kas labi saliek montāžas valodu tās OS programmēšanas kontekstā, šī ir atsauce uz Linux, Windows un pat mazliet par Mac OS X

  • PC montāžas valoda – tā koncentrējas uz 32 bitu datoriem, kuros darbojas Linux, Windows vai FreeBSD

  • X86 montāžas rokasgrāmata, no Virdžīnijas Universitātes Datorzinātnes katedras

  • Vebsters: norēķinās pats par “vietu montāžas valodas apgūšanai internetā”, šo vietni (acīmredzot) pārvalda The Art of Assembly Language autors un HLA izgudrotājs

  • Linux montāžas apmācība

  • Viegli X86-64

  • X86 montāža

  • Windows montāžas programmēšanas apmācība (pdf)

Video konsultācijas

  • Montāžas valodas programmēšanas apmācība, ļoti rūpīga 55 video sērija montāžā pēc Kipras Ervinas grāmatas Montāžas valoda x86 procesoriem (6. izdevums) (ja nesekojat videoklipiem, iespējams, vēlēsities jaunāku izdevumu)

  • Montāžas valodas programmēšanas video kurss, 70 daļu video sērija, kuru pasniedz Artūrs Grifits, kuram piemīt ļoti ļautīgs šarms

  • Montāžas valodas ievads, klases telpas lekcija Kornelā, iepazīstinot ar montāžas valodu

  • Montāžas valodas programmēšana, stundu ilgs ievads par montāžu un lielisks formāts, ja jums patiešām patika vidusskolas laikā sekot algebras piemēriem uz galvas projektora (šī ir daļa no lielākas mikroprocesoru un mikrokontrolleru sērijas).

Atsauce

  • X86 instrukciju saraksti, pilns visu x86 arhitektūru instrukciju saraksts ar piezīmēm par to pievienošanu

  • X86 opkods un instrukcijas

  • Intel X86 montāžas valodas apkrāpšanas lapa (pdf).

Rīki

Montētāji – pieejamo montētāju ir ļoti daudz – šeit ir daži no populārākajiem bezmaksas un atvērtā koda montētājiem:

  • NASM

  • FASM

  • YASM

  • GASM.

IDE (Integrētās attīstības vides):

  • SASM, vienkārša crossplatform IDE NASM, MASM, GAS, FASM montāžas valodām

  • Svaigs IDE, vizuālās montāžas valodas IDE ar iebūvētu FASM montētāju

  • WinAsm Studio, bezmaksas IDE 32 bitu Windows un 16 bitu DOS programmu izstrādei, izmantojot Assembler

  • Vizuālais MASM.

Sabiedrība un notiekošās mācības

  • Asamblejas forums vietnē Dream.In.Code

  • MASM forums

  • Montāžas valoda un mašīnas kods Hack forumos

Grāmatas

  • Montāžas valodas māksla (tiešsaistes izdevums) ir viena no populārākajām grāmatām par montāžas valodu no vienmēr lasāmā No Starch Press; jūs varētu interesēt arī šī paša autora raksti: Uzrakstiet lielisku kodu: 1. sējums: Izprotiet mašīnu un uzrakstiet lielisku kodu, 2. sējums: Zema līmeņa domāšana, Augsta līmeņa rakstīšana

  • Montāžas valoda soli pa solim: programmēšana ar Linux

  • Profesionālā montāžas valoda

  • Montāžas valoda x86 procesoriem

  • Mūsdienu X86 montāžas valodas programmēšana: 32 bitu, 64 bitu, SSE un AVX

  • ievads 64 bitu montāžas programmēšanai operētājsistēmai Linux un OS X: trešais izdevums – operētājsistēmai Linux un OS X

  • Ievads 80X86 montāžas valodā un datoru arhitektūrā

  • Montāžas valodas programmēšana: personālajiem un klēpjdatoriem.

Ja jums vajadzētu iemācīties montāžas valodu?

Tas, vai jums vajadzētu iemācīties montāžas valodu, ir atkarīgs no tā, kādi ir jūsu mērķi. Lielākajai daļai izstrādātāju atbilde ir “nē”.

Ir divi galvenie iemesli iemācīties montāžas valodu: tāpēc, ka vēlaties to lietot tieši, vai tāpēc, ka vēlaties saprast datorus pamatlīmenī.

No praktiskā viedokļa tikai relatīva neliela daļa pasaules inženieru un datorzinātnieku faktiski izmanto montāžas valodu.

Lielākā daļa programmatūras izstrādes, ieskaitot praktiski visu veidu lietojumprogrammu izstrādi, izmanto augsta līmeņa programmēšanas valodas, nevis montāžas kodu. Dažas īpašas jomas, kurās tiek izmantota montāžas valoda, ir:

  • Operētājsistēmas

  • Programmaparatūra

  • Ierīču draiveri

  • Valodas noformējums

  • Kompilatora dizains

  • Iegultās sistēmas

  • Aparatūras dizains

  • Uzlabotā kriptogrāfija

  • Datorzinātnes teorētika

Otrs iemesls iemācīties montāžas valodu ir tikai labāka izpratne par to, kas patiesībā notiek dziļi datora iekšienē. (Tāpēc praktiski visiem datorzinātņu uzņēmumiem ir jāiemācās montāžas valoda.)

Protams, ja jūs esat tāds cilvēks, kurš par to patiesi interesējas, jūs varētu vēlēties padomāt par karjeru, strādājot zema līmeņa sistēmu attīstībā.

Citas lietas, kas jāmācās

Ir dažas valodas, kurās, ja jūs zināt tikai nedaudz, jūs varat darīt daudz. Python un Ruby ir tādi – nedēļas nogalē var iemācīties pietiekami daudz, lai izveidotu kaut ko vērtīgu. Montāžas valoda nav tāda.

Montāžas valoda nekad netiek izmantota vakuumā. Inženiera tips, kuram jāzina montāža, visticamāk, strādā jomā, kur, lai tā būtu efektīva, ir jāzina nedaudz citu prasmju. Tie, iespējams, ietver:

  • Aparatūras valodas, piemēram, VHDL un Verilog, kā arī laba izpratne par mikroprocesoriem un elektrotehniku

  • Zema līmeņa operētājsistēmas valodas, piemēram, C un tā atvasinājumi: C ++, C # un D

  • Mantotās valodas, piemēram, Fortran un Cobol

  • Platformu valodas, piemēram, Java un Objective-C

  • Algoritmi

  • Sastādītāja, tulka un valodas noformējums.

Turpmākie lasījumi un resursi

Mums ir daudz vairāk informācijas par šāda veida lietām, Programmēšana: Valodas, Laika skala & Ceļveži.

Kāds kods jums jāiemācās?

Neizpratnē par to, kādā programmēšanas valodā jums vajadzētu iemācīties iekļūt? Iepazīstieties ar mūsu infografiku Ko kods jums jāiemācās?

Tajā aplūkoti ne tikai dažādu valodu aspekti, bet arī sniegti atbildes uz svarīgiem jautājumiem, piemēram, “Cik daudz naudas es nopelnīšu Java programmēšanai iztikai?”

Kāds kods jums jāiemācās?
Kāds kods jums jāiemācās?

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