Asembla lingvo: Malsamoj inter versioj
[kontrolita revizio] | [kontrolita revizio] |
Enhavo forigita Enhavo aldonita
Revizio de 19:45, 14 feb. 2016 farita de Doesle (diskuto | kontribuoj) multe pli bonis |
plibonigoj |
||
Linio 1:
'''Asembla komputillingvo''' estas skribosistemo por la maŝina lingvo, kiun uzas specifa komputila
Malkiel en altnivelaj lingvoj
Ĉiu
Aldone, multoblaj aroj de mnemonikaj simboloj aŭ asembla sintakso povas ekzisti por unuopa instrukciaro. En ĉi tiuj kazoj, la plej populara estas kutime tio uzata en la dokumentaro de la fabrikanto.
Linio 11:
Similaj bazaj operacioj estas uzeblaj en preskaŭ ĉiuj instrukciaroj.
* kopii / movi
**
**
* komputi
** aldoni, subtrahi, (parte eĉ multipliki aŭ dividi
** perbite kombini du reĝistrajn valorojn per logika "kaj
* kompari kaj utiligi kondiĉojn
*
** salti al alia loko en la programo (kutime instrukcioj estas traktataj sinsekve)
** salti al alia loko, sed konservi la pozicion de la sekva instrukcio kiel revenlokon
** reiri al la lasta revenloko
** kondiĉe salti
Specifaj instrukciaroj ofte havas unuopajn aŭ malmultajn instrukciojn por oftaj komplikaj operacioj (porj kiuj normale necesus multaj unuopaj instrukcioj), ekzemple:
Linio 27 ⟶ 28:
* movi grandajn memorblokojn
* alta aritmetiko ([[sinuso]], [[kosinuso]], [[kvadrata radiko]], ktp.)
* alta logiko (CRC32 aŭ eĉ kriptografio)
* apliki unu operacion (
La nomoj de la instrukcioj varias laŭ la asembla lingvo por diversaj procesoroj. Ankaŭ por la sama procesoro
== Kelkaj ĉefaj maŝinaj instrukcioj x86 ==
Ekzemploj validas por procesoroj Intel '''x86''' kaj similaj.
{| border=1
| Instrukcio || Signifo
|-▼
|-
| '''jmp''' || [[senkondiĉa trairo]]
Linio 57 ⟶ 65:
|-
| '''or''' || [[laŭbita logika AŬ]]
▲|-
▲| '''nop''' || operacio, kiu nenion faras
|-
| '''not''' || [[laŭbita logika NE]]
|-
| '''ret''' || [[reveno el
|}
La instrukcio ''mov''
Kalkulaj instrukcioj kutime havas du argumentojn. Ekzemple adicio aldonas unu el la argumentoj al la alia. Same kiel pri kopiado, kien estas skribita la rezulto dependas de la konkreta varianto de asembla lingvo. Do <code>add a, b</code> povas signifi, ke la valoro ''a+b'' estas konservita en ''a'' aŭ en ''b''.
Linio 81 ⟶ 85:
== Uzo de asembla lingvo ==
Estas iom da polemiko pri la utileco de asembla lingvo. En multaj kazoj, modernaj tradukiloj povas transformi kodon de altnivelaj lingvoj en maŝinan kodon kiu funkcias preskaŭ same rapide kiel mane verkita kodo en asembla lingvo. Sed pli frue 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 lante.
Tamen, kelkaj kalkuloj povas ankoraŭ hodiaŭ esti transformitaj en pli rapidan kodon 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.
Linio 87 ⟶ 91:
== Eksteraj ligiloj ==
[[Kategorio:Programlingvoj]]
|