CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Assembler - Wikipedia

Assembler

Een assembler is een programma dat assembly-instructies omzet naar machinecode die een processor kan uitvoeren.

Assembly is een primitieve programmeertaal die nauwelijks meer dan een symbolische weergave van machinetaal is. Bij deze taal is het zo dat iedere regel van een assembly-instructie naar een enkele machinecode-instructie wordt vertaald, waarbij de vertalende assembler nog wel wat ondersteuning biedt in de vorm van symbolische namen voor geheugenlocaties die gebruikt worden voor de opslag van variabelen, en labels voor sprongopdrachten in plaats van absolute of relatieve adressen.

De meest voorkomende machinetaal is die voor de x86 (x86 staat voor 8086, 186, 286, 386, 486 en de Pentium familie). Voor elke processorsoort is echter een overeenkomende machinetaal, denk aan bijvoorbeeld de PowerPC, Motorola 68k en DEC Alpha processoren.

Wij zullen hier verder de x86 machinetaal en overeenkomende assembly bespreken.

Een regel in een assemblyprogramma bevat over het algemeen:

  • al of niet een label (de symbolische naam van een geheugenplaatsadres)
  • de mnemonic (symbolische naam van een instructie) en de eventuele argumenten voor de instructie
  • eventueel commentaar

Voorbeeldje :

        MOV cx,10;    vul register cx met 10 (move)
hierzo:
        DEC cx;     trek van register cx het getal 1 af (decrement)                  
        JNZ hierzo;   indien nog geen nul (not zero), spring (jump) naar label 'hierzo'

De processor zal dit lusje 10 keer doorlopen en dan verdergaan met de erop volgende instructies.

Een assembler vertaalt de assemblycode naar machinetaal. Een disassembler doet het tegenovergestelde, en vertaalt dus machinetaal terug naar assembly. De labels zijn hierbij natuurlijk niet zo informatief.

Omdat iedere instructie in een assemblyprogramma één op één overeenkomt met een instructie van de processor, is een programma geschreven in assembly niet overdraagbaar van de ene processor naar een uit een andere familie; de instructieset van verschillende processorfamilies verschilt totaal en dus wijken de corresponderende assembleertalen sterk af. Zogenaamde 'compatibele' processoren delen (grotendeels) de instructieset.

Voorbeelden van processorfamilies zijn de Intel Pentium en verwante types van AMD, de Motorolaprocessoren in Applecomputers tot 2005, en de IBM 370-mainframefamilie.

Inhoud

[bewerk] Programmeren in assembly

Het voordeel van programmeren in assembly is dat de code zeer compact kan zijn. Het nadeel is dat zelfs voor eenvoudige programmaatjes zoveel code nodig is dat de programmeur snel het overzicht verliest. De belangrijkste toepassing van assembly is het optimaliseren van binnenste programmalussen in zeer rekenintensieve programma's.

Daarnaast is kennis van assembly onontbeerlijk voor programmeurs die software willen "kraken". "Kraken" (in het Engels "cracking"), is het veranderen van de code van bestaande software met behulp van een disassembler. Meestal wordt een programma gekraakt om beveiligingsinstellingen van shareware te omzeilen. Het kraken van software is bijna altijd illegaal en strafbaar. Overigens is programmeren in assembly (en daardoor dus ook het kraken van software) niet weggelegd voor beginnende programmeurs. Vergeleken met programmeren in hogere talen zoals C++ en Java waarmee beginners al snel een eenvoudig programmaatje kunnen schrijven is programmeren in assembly bijzonder ingewikkeld.


[bewerk] Assemblers

De assembler is zoals gezegd het programma waarmee voor mensen begrijpelijke assembleertaal wordt omgezet in voor processoren begrijpbare code. Enkele assemblers zijn bijvoorbeeld:

MASM, de Microsoft assembler, probeert assembly meer op een hogere programmeertaal te laten lijken. Deze heeft daardoor een soms vreemde syntaxis. Deze assembler was een van de eerste assemblers voor de x86.

TASM, de Borland Turbo assembler, heeft een duidelijkere syntaxis dan MASM, maar kan ook de MASM syntaxis begrijpen. Ook deze assembler was er vroeg bij en is daarom ook vaak de keuze van de oude garde.

NASM, de Netwide assembler, een redelijk nieuwe assembler met een zeer simpele syntaxis waarin alles duidelijk gezegd moet worden en niks wordt aangenomen. Deze open-sourcesoftware is perfect voor mensen die alles in de hand willen houden.

"YASM", deze assembler is een compleet herschreven versie van de NASM assembler en wordt onder de BSD-licentie uitgebracht. Belangrijkste eigenschappen zijn de ondersteuning van de x86-64 instructieset, en de uitvoer van PE COFF64 en ELF64 bestandsformaten naast (PE) COFF(32), ELF32 en BIN.

FASM, de Flat assembler, is ook open-source assembler. Ook FASM ondersteunt de x86-64 instructieset. Kijk op de website voor meer informatie.

[bewerk] Linkers

De meeste assemblers geven na uitvoering een .obj bestand terug. Dit moet omgezet worden in een uitvoerbaar bestand (bijvoorbeeld een .exe) voordat het uitgevoerd kan worden. Dit doet men door deze te linken. Met het linken kunnen ook twee of meer .obj bestanden samengevoegd worden. Omdat sommige compilers van hogere programmeertalen ook .obj bestanden leveren, kan men zo een gemixt project maken.

Meestal zit de linker al bij de assembler, anders kunt u bijvoorbeeld alink gebruiken.

[bewerk] Externe links

 
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com