Asembla lingvo

El Vikipedio, la libera enciklopedio
Saltu al: navigado, serĉo

La asembla komputilolingvo estas kiel tradukolingvo inter homoj kaj komputilo. La vera maŝinolingvo estas nur sekvoj de bitoj (numeraroj), do tradukiĝas al io kiu pli facile legiĝas de homo.

En la asembla, estas unu-al-unu-traduko inter la asembla kodo kaj maŝinkodo, do komputiloj tradukas ambaŭflanke sen perdi informojn. Kiam vera programado fariĝas per asembla lingvo kiu uzas pli altajn eblojn (kiel makroojn), la unu-al-unu-rilato perdiĝas.

Ĉiu komputila arĥitekturo havas sian propran maŝinan lingvon, kaj do propran asemblan lingvon (la ĉi-supra ekzemplo estas el la i386). Ĉi tiuj lingvoj malsamas pro la nombro kaj speco de eblaj faroj. Ili haveblas nesamajn grandecojn pri la nombroj de reĝistroj, kaj pri la prezentomanieroj de datumoj (informeroj) en la memoro. Diversaj lingvoj fareblas samaĵojn sed la maniero ne samas.

Plie, la memorohelpaj simboloj kaj asemblaj lingvaĵoj eble ne samas inter kompanioj kaj programoskribintoj.

Maŝinaj instrukcioj[redakti | redakti fonton]

Similaj bazaj agoj estas uzeblaj en preskaŭ ĉiuj instrukciaroj.

  • movado
    • preni valoron el reĝistro
    • movi datumon el memora loko al reĝistro aŭ inverse
  • komputado
    • aldoni, senigi, obligi aŭ malobligi la valorojn de du reĝistroj, metante la rezulton en reĝistron
    • kunmeti du reĝistrajn valorojn per logika kaj/aŭ
    • nuligi reĝistran valoron aritmetike aŭ logike
  • efiki fluon de programo
    • salti al alia loko en la programo (kutime instrukcioj estas traktataj sinsekve)
    • salti alian lokon, sed konservi la pozicion de la sekva instrukcio kiel revenolokon
    • reveni la lastan revenlokon

Specifaj instrukciaroj ofte havas unuopajn aŭ malmultajn instrukciojn por oftaj, komplikaj operacioj (kiam normale necesus multaj unuopaj instrukcioj), ekzemple:

Por la sama procesoro, esteblas nesimilaj nomoj por la lingvaĵoj. Estas la instrukcionomoj kiuj plejofte samas en diversaj asemblaj lingvoj:

Instrukcio Signifo
jmp trairo
mov kopiado
cmp komparo
and kaj
sub senigo (malaldono)
dec malpligrandigo je 1
inc pligrandigo je 1
add aldono
mul obligo
div malobligo
xor malinkluziva aŭ
or inkluziva aŭ
nop operacio, kiu nenion faras
not ne
ret reveno

Mov kutime havas du argumentojn kaj skribiĝas kiel mov a, b.

La alvojo pri la kopiado apogas je la konkreta varianto de asembla lingvo. Esteblas de a al b, aŭ male.

Kalkulaj instrukcioj kutime havas du argumentojn. Ekzemple, aldono aldonas unu el la argumentoj al la alia. Kien skribiĝas la rezulto apogas de la konkreta varianto de asembla lingvo. Do, add a, b signifas ke la valoro a+b konserviĝas en a, aŭ en b.

Ordonoj de asembla lingvo[redakti | redakti fonton]

Ekzistas kromaj ordonoj por asembli datumblokojn kaj doni adresolokojn al instrukcioj kaj kodoj. Kutime difiniĝas valoroj kiel simplaj, simbolaj esprimoj, kiuj igas ke la ido facile kompreniĝas.

Ankaŭ kutime ekzistas makroa lingvo por pli faciligi la kreon de malsimplaĵojn.

Uzo[redakti | redakti fonton]

Modernaj iloj tradukas kodospecojn inter homofacila kaj maŝinfacila lingvoj, do oni ne kutime bezonas skribi per la vera asembla lingvo, ĉar malŝparus tempon. Do la asembla plejofte uziĝas kiam oni, ekzemple, redaktas malnovajn ludojn (ekzemple, por la »gameboy color«) kaj ne kiam oni skribas novajn programojn por nuntempaj komputaĵoj.

Tamen, kelkaj kalkuloj kaj skriboj eĉ nuntempe estus pli rapidaj aŭ facilaj se uzas la asemblan lingvon, kaj tiam jes uziĝemas. Kelkaj sistem-apogantaj taskoj ne esprimiĝeblas per altaj komputilolingvoj.

Eksteraj ligiloj[redakti | redakti fonton]