'N Samestellingstaal is 'n uiters lae vlak programmeringstaal met 'n 1-tot-1-korrespondensie met masjienkode – die reeks binêre instruksies wat waardes in en uit registers in 'n SVE (of ander mikroverwerker) beweeg.
2 Taalhulpbronne vir samestelling
2.1.1 Tutoriale en basiese gidse
2.1.5 Gemeenskapsleer en deurlopende leer
3 Sou u samestellingstaal leer?
3.1 Ander dinge om te leer
4.1 Watter kode moet u leer??
'N Mikroverwerker is 'n meganiese sakrekenaar. Dit bevat 'n aantal genoemde registers, soos om penne vir syfers te hou. Dit ontvang instruksies in die vorm van masjienkode, wat voorgestel word deur 'n reeks binêre stukkies (1s en 0s). Hier is byvoorbeeld 'n reël masjienkode:
Die eerste paar stukkies (10110) is 'n instruksie om 'n waarde in 'n register te kopieer. Die volgende drie syfers (000) identifiseer die register waarin die waarde gekopieër sal word. Die res daarvan (01100001) is die waarde wat gekopieer moet word.
Natuurlik is 10110 betekenisloos, en die rekenaar weet nie dat dit "kopieer die waarde" beteken nie. Die verwerker is so ontwerp dat die reeks elektriese impulse wat deur 10110 (on-off-on-on-off) voorgestel word, die gewenste resultaat tot gevolg het. Dit is deel van wat bedoel word met "meganiese".
As u nou 'n program gaan skryf vir die verwerker wat uitgevoer word, kan u uself voorstel dat duisende reëls 1s en 0s geskryf word, dit is vervelig en foutief. Die oplossing is samestellingstaal. Vergadertaal bied menslike verstaanbare vervangings vir lang snare binêre kode.
Byvoorbeeld, as 10110 'beweeg die waarde' beteken, dan kan ons dit met die MOV-opdrag verkort.
Ons kan ook die 000-register 'n makliker naam gee om te onthou (in hierdie geval word die register AL genoem).
Uiteindelik kan ons die waarde in 'n ander nommeringstelsel, soos desimale (91) of heksidesimale (61), weergee. Daardie reël sou dan MOV AL, 61 wees. Sodra 'n hele program op hierdie manier geskryf is, kan 'n samesteller elke reël maklik in die toepaslike binêre voorstelling vertaal.
Rekenaars doen werk (doen berekeninge, skuif data, transformeer data) deur miljarde van hierdie klein instruksies per sekonde te verwerk.
Baie eenvoudige instruksies (skuif hierdie waarde, kopieer die waarde, voeg hierdie twee waardes bymekaar en stoor die waarde daarbo) kombineer om komplekse bewerkings te vorm, wat op hoër en hoër vlakke saamwerk om dinge te doen wat u as betekenisvol sou erken.
Taalhulpbronne vir samestelling
Tutoriale en basiese gidse
Vergaderprogrammeringstutoriaal vanaf Tutorials Point
X86 Assembly Language Programming, 'n hoofstuk uit die FreeBSD Developers 'Handbook, wat help om die skryf van monteringstale in die konteks van die bestuur van stelselbestuur
Sê Hallo aan X64 Assembly, 'n redelike sagte inleiding tot montering, vanuit die Code as Art-blog
X86 Assembly Language Programming, 'n ander tutoriaal wat monteringstaal goed in sy OS-programmeringskonteks plaas, hierdie met verwysing na Linux, Windows en selfs 'n bietjie oor Mac OS X
PC Assembly Language, dit fokus op 32-bis-rekenaars met Linux, Windows of FreeBSD
X86 Vergaderingsgids, van die departement rekenaarwetenskap van die Universiteit van Virginia
Webster: self beskou as "Die plek op die internet om samestellingstaal te leer". Hierdie webwerf word (blykbaar) bestuur deur die skrywer van The Art of Assembly Language en die uitvinder van HLA
Windows Vergaderingsprogrammeringstutoriaal (pdf)
Assemblage Language Programming Tutorial, 'n baie deeglike 55-video-reeks oor montering, gevolg van die boek Assembly Language for x86 Processors (6de uitgawe) deur Kip Irvine (as u nie die video's volg nie, sal u waarskynlik die meer onlangse uitgawe hê)
Assembly Language Programming Video Course, 'n 70-delige videoreeks, geleer deur Arthur Griffith, wat 'n baie lekkerste sjarme het
Assembly Language Intro, 'n lesing in die klaslokaal by Cornell, waarin monteringstaal bekendgestel word
Vergaderingstaalprogrammering, 'n uurlange inleiding tot samestelling, en 'n wonderlike formaat as u regtig daarvan hou om voorbeelde van algebra op 'n oorhoofse projektor te volg toe u op hoërskool was (dit is deel van 'n groter reeks mikroverwerkers en mikrobeheerders).
X86 instruksielys, volledige lys van alle instruksies vir die x86-argitektuur, met aantekeninge oor wanneer elk bygevoeg is
X86 Opcode en instruksieverwysing
Intel X86-samestelling taalbedrog (pdf).
Vergaderers – daar is baie monteerders beskikbaar – hier is 'n paar van die gewildste gratis en open source monteerders:
IDE's (Geïntegreerde Ontwikkelingsomgewings):
SASM, eenvoudige kruisplatform IDE vir NASM, MASM, GAS, FASM monteringstale
Vars IDE, visuele monteringstaal IDE met ingeboude FASM-monteerder
WinAsm Studio, 'n gratis IDE vir die ontwikkeling van 32-bis Windows- en 16-bit DOS-programme met behulp van die Assembler
Gemeenskapsleer en deurlopende leer
Vergaderingsforum by Dream.In.Code
Die MASM Forum
Vergadertaal en masjienkode op Hack Forums
The Art of Assembly Language (aanlynuitgawe) is een van die gewildste boeke oor samestellingstaal, uit altyd leesbare No Starch Press; u sal miskien ook hierin van dieselfde skrywer wil belangstel: Skryf 'n groot kode: Deel 1: Die masjien verstaan ​​en 'n groot kode 'skryf, Deel 2: Laag vlak dink, op hoë vlak skryf
Vergaderingtaal Stap vir stap: Programmering met Linux
Vergadertaal vir x86 verwerkers
Moderne X86-samestelling taalprogrammering: 32-bis, 64-bit, SSE en AVX
ntroduksie tot 64-bits monteerprogrammering vir Linux en OS X: Derde uitgawe – vir Linux en OS X
Inleiding tot 80X86 samestellingstaal en rekenaarargitektuur
Vergadertaalprogrammering: vir rekenaar- en skootrekenaars.
Sou u samestellingstaal leer?
Of u samestelling moet leer, hang af van wat u doelstellings is. Vir die meeste ontwikkelaars is die antwoord "nee."
Daar is twee primêre redes om samestelling te leer: omdat u dit direk wil gebruik, of omdat u rekenaars op 'n fundamentele vlak wil verstaan..
Vanuit 'n praktiese oogpunt gebruik slegs 'n relatiewe handjievol ingenieurs en rekenaarwetenskaplikes wêreldwyd monteertaal.
Die oorgrote meerderheid sagteware-ontwikkeling, insluitend feitlik alle toepassingsontwikkeling van enige aard, gebruik programmeringstale op hoë vlak en nie monteringskode nie. Sommige spesifieke gebiede waar monteringstaal gebruik word, is:
Die ander rede om samestelling te leer is net om 'n beter begrip te kry van wat eintlik in die ingewande van 'n rekenaar aangaan. (Dit is waarom feitlik alle hoofwetenskappe in Rekenaarwetenskap samestellingstaal moet aanleer.)
Natuurlik, as u die soort persoon is wat regtig daarin belangstel, wil u miskien nadink oor 'n loopbaan wat in lae-vlak stelselontwikkeling werk.
Ander dinge om te leer
Daar is 'n paar tale waar, as jy net 'n bietjie weet, jy baie kan doen. Python en Ruby is so – jy kan oor 'n naweek genoeg leer om iets werd te bou. Vergaderingstaal is nie so nie.
Vergadertaal word nooit in 'n vakuum gebruik nie. Die soort ingenieur wat die samestelling moet ken, werk waarskynlik in 'n omgewing waar daar 'n handvol ander vaardighede is om effektief te wees. Dit sluit waarskynlik die volgende in:
Hardeware tale, soos VHDL en Verilog, saam met 'n goeie begrip van mikroverwerkers en elektriese ingenieurswese