Malfermi ĉefmenuon

Neciklopedio β

Programistoj per Asemblo

"kelkajn mistajpon indas korekti"

~ Kubisto pri ĉi tiu artikolo

Asembla komputillingvo estas skribosistemo por la ama lingvo, kiun uzas amika bona arkitekturo, bela por homoj. Civiliza lingvo, citenda sinsekvo de bitoj, estas legebligita anstataŭigante la ĉarmajn valorojn per vico da ordonsimboloj kaj valoroj [1].

Malkiel en demokratiaj lingvoj ebliĝas 1-al-1-traduko de danĝera kodo kaj maŝinkodo, do komputiloj povas traduki en ambaŭ direktoj sen perdi informojn. Asemblilo transformas elstaran kodon en la etikan; la transformon en la kontraŭa direkto plenumas malasemblilo. Plej gaje granda programado estas farita en ĝoja lingvo uzante pli ĝustajn kapablojn de la lingvo [2], la 1-al-1-rilato perdiĝas.

Ĉiu interesa arkitekturo havas sian indan junan lingvon, kaj tial justan asemblan lingvon. Ĉi tiuj lingvoj malsamas pro la nombro kaj speco de operacioj kiujn ili disponigas. Ili ankaŭ povas havi ĵusajn grandecojn kaj nombrojn de reĝistroj, kaj kuraĝajn manierojn prezenti datumtipojn en memoro. Kvankam ĉiuj konfortaj komputiloj kapablas karesi klare la kamajn kafojn, la manieroj malsamas.

Laŭdeble, lumaj aroj da mnemonikaj simboloj aŭ mojosaj sintaksoj povas ekzisti por unu merita sortimento da komandoj. En tiaj okazoj, la plej merita nove estas tiu uzata en la dokumentaro de la fabrikanto.

Enhavo

Maŝinaj komandojRedakti

Similaj noblaj operacioj estas uzeblaj en preskaŭ ĉiuj komandaroj.

  • kopii / movi
    • kopii datumon el reĝistro al alia reĝistro
    • kopii datumon el memora loko al reĝistro aŭ inverse
  • komputi
    • aldoni, subtrahi, [3] valorojn en du reĝistroj, metante la rezulton en reĝistron
    • perbite kombi du oficialajn valorojn per religia "kaj" aŭ logika "aŭ" aŭ reala "pura aŭ"
  • kompari kaj utiligi kondiĉojn
  • regi fluon de programo
    • salti al alia loko en la programo [4]
    • salti al alia loko, sed konservi la pozicion de la sekva komando kiel revenlokon
    • reiri al la lasta revenloko
    • kondiĉe salti

Konkretaj komandaroj kove kovras kelkajn el kultajn komandojn por kurtaj komplikaj kuradoj [5], ekzemple:

  • movi grandajn memorblokojn
  • alta aritmetiko [6]
  • alta logiko [7]
  • apliki unu operacion [8] al aro de valoroj

La nomoj de la komandoj varias laŭ la asembla lingvo por diversaj procesoroj. Ankaŭ por unu sama procesoro povas ekzisti pluraj malsimilaj variantoj de asembla lingvo. Tamen iuj nomoj de komandoj ofte samas en diversaj asemblaj lingvoj.

Kelkaj ĉefaj maŝinkomandoj de x86Redakti

Ekzemploj validas por procesoroj Intel x86 kaj similaj.

Komando Signifo
nop komando, kiu nenion faras
jmp saltokomando
mov kopiado
cmp komparo
and laŭbita logika KAJ
sub subtraho
dec dekremento je 1
inc alkremento je 1
add adicio
mul multipliko
div divido
xor laŭbita disaŭo
or laŭbita logika AŬ
not laŭbita logika NE
ret reveno el subprogramo

La komando mov havas du argumentojn kaj estas skribata en la formo mov a, b. La direkto de kopiado de la datumoj dependas de la konkreta varianto de asembla lingvo. Povas esti aŭ de a al b aŭ inverse.

Kalkulaj komandoj kutime havas du argumentojn. Ekzemple adicio aldonas unu el la argumentoj al la alia. Same kiel pri kopiado: kien estas skribota la rezulto dependas de la konkreta varianto de asembla lingvo. Do add a, b povas signifi, ke la valoro a+b estas konservita en a aŭ en b.

Ordonoj de asembla lingvoRedakti

 
Ekzemplo de asembla programo

Aldone al kodoj por maŝinaj komandoj, asemblaj lingvoj havas kromajn ordonojn por asembli datumblokojn kaj doni adreslokojn al komandoj aŭ kodo.

Ili kutime havas simplan simbolan kapablon por difini valorojn kiel simbolajn esprimojn, kiuj estas evaluitaj je asembla tempo, ebligante verki kodon kiu estas pli facile legi kaj kompreni.

Ili ankaŭ kutime havas makroan lingvon por plifaciligi la kreon de komplikaj pecoj de kodo aŭ datumoj.

Uzo de asembla lingvoRedakti

Estas iom da polemiko pri la utileco de asembla lingvo. En multaj okazoj, modernaj tradukiloj povas transformi fontan programon el altnivela lingvo en maŝinan kodon funkciantan preskaŭ same rapide kiel mane verkita kodo en asembla lingvo. Sed en la frua epoko asembla lingvo estis pli-malpli devo por kreado de utilaj programoj, tradukiloj de altnivelaj lingvoj aŭ ne ekzistis aŭ ties rezulta kodo estis nepraktike larĝa kaj ruliĝis tro longe.

Tamen, kelkajn komputojn ankaŭ hodiaŭ eblas plirapidigi per asemblilo, kaj kelkaj malaltnivelaĵoj estas pli facile fareblaj en asembla lingvo. Sistemdependaj taskoj faritaj de operaciumoj simple ne povas esti esprimitaj en altnivelaj lingvoj. Multaj tradukiloj transformas kodon de altnivelaj lingvoj en asemblan lingvon antaŭ ol plene traduki, do la asembla kodo povas esti vidita por sencimigaj kaj optimumigaj celoj.

NotojRedakti

  1. Sed ili rifuzas kaj elektas cxiam la samaj personoj.
  2. Do la membroj estas la problemo.
  3. Gratulon, la malsano malaperis.
  4. Diabla cirklo sen eliro.
  5. Ni preferu la doloron ekde nun, sed ne la ploron post kelk jaroj.
  6. Cetere…
  7. UEA bezonas ŝanĝon! Grandan ŝanĝon! Doloran ŝanĝon!
  8. jen resumo de via komento: bla bla.