Asembla lingvo: Malsamoj inter versioj

[nekontrolita versio][kontrolita revizio]
Enhavo forigita Enhavo aldonita
KuBOT (diskuto | kontribuoj)
e Roboto: anstataŭigo de "Ŝablono:El" per "Ŝablono:EL" (laŭ VP:AA); kosmetikaj ŝanĝoj
gramatiko; aprobo
Linio 1:
'''Asembla komputillingvo''' estas legebla de homoj skribosistemo por la maŝina lingvo, kiun uzas specifa komputila arĥitekturo, legebla de homoj. Maŝina lingvo, nura sinsekvo de bitoj, estas legebligita per anstataŭianstataŭigante la originalajnnumerajn valorojn per simbolojvico da ordonsimboloj kaj valoroj (tial en Esperanto oni ankaŭ uzas la nomon '''simbola maŝinkodo''').
[[Komputiko]] > [[Programlingvo]] > '''Asembla Komputillingvo'''
----
'''Asembla komputillingvo''' estas legebla de homoj skribosistemo por la maŝina lingvo kiun uzas specifa komputila arĥitekturo. Maŝina lingvo, nura sinsekvo de bitoj, estas legebligita per anstataŭi la originalajn valorojn per simboloj (tial en Esperanto oni ankaŭ uzas la nomon '''simbola maŝinkodo''').
 
Malkiel en altnivelaj lingvoj, estas 1-al-1 -traduko de simpla asembla lingvokodo alkaj maŝina lingvomaŝinkodo, do komputiloj povas traduki en ambaŭ direktoj sen perdi informojn. Transformi asemblan lingvon en maŝinajnmaŝinan lingvojnkodon estas farita per asemblilo, la alianalia direktondirekto per malasemblilo. Kiam vera programado estas farita en asembla lingvo, estasuzante kutimepli enaltnivelajn plikapablojn komplikade la lingvo speco(kiel makroojn), kaj la konvena 1-al-1 -rilato ne plu estasperdiĝas.
Do, dum komputilo rekonas la ordonon "10110000 01100001", por programistoj estas pli facile memori la egalan reprezenton en asembla lingvo "mov $0x61, %al" (signifas movi la [[deksesuma]]n valoron 61, dekume 97, al la memorloko 'al').
 
Malkiel en altnivelaj lingvoj, estas 1-al-1 traduko de simpla asembla lingvo al maŝina lingvo, do komputiloj povas traduki en ambaŭ direktoj sen perdi informojn. Transformi asemblan lingvon en maŝinajn lingvojn estas farita per asemblilo, la alian direkton per malasemblilo. Kiam vera programado estas farita en asembla lingvo, estas kutime en pli komplika speco, kaj la konvena 1-al-1 rilato ne plu estas.
 
Ĉiu komputila arĥitekturo havas sian propran maŝinan lingvon, kaj tial propran asemblan lingvon (la ĉi-supra ekzemplo estas de la i386). Ĉi tiuj lingvoj malsamas pro la nombro kaj speco de operacioj kiujn ili subtenas. Ili ankaŭ povas havi malsamajn grandecojn kaj nombrojn de reĝistroj, kaj malsamajn reprezentmanierojn de datumtipoj en memoro. Dum ĉiuj ĝeneralcelaj komputiloj kapablas fari escene la samajn aferojn, la maniero malsamas.
 
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 deen la fabrikantodokumentaro ende la dokumentarofabrikanto.
 
== Maŝinaj instrukcioj ==
 
SimlajSimilaj bazaj operacioj estas uzeblauzeblaj en preskaŭ ĉiuj instrukciaroj.
== Maŝinaj instrukcioj ==
 
Simlaj bazaj operacioj estas uzebla en preskaŭ ĉiuj instrukciaroj.
* movado
** preni valoron enel reĝistronreĝistro
** movi datumon el memora loko al reĝistro, aŭ inverse
* komputado
** aldoni, subtrahi, multobligi,multipliki aŭ dividi la valorojn de du reĝistroj, metante la rezulton en reĝistron.
** kombini du reĝistrajn valorojn per logika kaj/aŭ
** nuligi reĝistran valoron aritmetike aŭ per logika ne
* efiki fluon de programo
** salti al alia loko en la programo (kutime instrukcioj estas traktataj sinsekve)
** salti al alia loko, sed ŝparikonservi la sekvanpozicion instrukcionde la sekva instrukcio kiel revenlokon
** reiri al la lasta revenloko
 
Specifaj instrukciaroj ofte havas unuopajn aŭ malmultajn instrukciojn por oftaj komplikaj operacioj por(porj kiukiuj kutimenormale necesus multaj unuopaj instrukcioj), ekzemple:
 
* movi grandajn memorblokojn
* alta aritmetiko (sine[[sinuso]], cosine[[kosinuso]], [[kvadrata radiko]], ktp.)
* apliki unu operacion (ekz. aldonadon) al aro de valoroj
 
NomojLa nomoj de la instrukcioj ogtevarias estaslaŭ diversajla enasembla asmblaj lingvojlingvo por diversaj procesoroj. Ankaŭ por la sama procesoro estadasestas pluraj diversajmalsimilaj variantoj de asembla lingvo. Tamen estas nomoj de instrukcioj, kiuj estas ofte la samaj en diversaj asemblaj lingvoj:
 
{| border=1
Linio 61 ⟶ 58:
| '''or''' || [[laŭbita logika AŬ]]
|-
| '''nop''' || operacio, kiu nenion faras
|-
| '''not''' || [[laŭbita logika NE]]
Linio 68 ⟶ 65:
|}
 
InstrukcioLa instrukcio ''mov'' kutime havas 2du argumentojn kaj estas skribita en la formo <code>mov a, b</code>.
mov a, b
 
DirektoLa direkto de kopiado de la datumoj dependas de la konkreta varianto de asembla lingvo. Povas esti kajaŭ de ''a->b'' kajal ''b->a'' aŭ inverse.
 
Kalkulaj instrukcioj kutime havas 2du argumentojn. Ekzemple adicio aldonas la unu el la argumentoj al la alainalia. Same kiel pri kopiado, kien estas skribita la rezulto dapendasdependas 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''.
add a, b
estas ''a+b->a'' aŭ ''a+b->b'' .
 
== Ordonoj de asembla lingvo ==
 
Aldone al kodoj por maŝinaj instrukcioj, asemblaj lingvoj havas kromajn ordonojn por asembli datumblokojn, kaj doni adreslokojn al instrukcioj 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 profundigitan makroa lingvo por plifaciligi la kreon de komplikaj pecoj de kodo aŭ datumoj.
 
Ili ankaŭ kutime havas profundigitanmakroan makroa lingvolingvon por plifaciligi la kreon de komplikaj pecoj de kodo aŭ datumoj.
 
== Uzo de asembla lingvo ==
Linio 90 ⟶ 83:
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 same rapide kiel mane verkita kodo en asembla lingvo.
 
Tamen, iuj *discrete*kelkaj kalkuloj povas ankoraŭ hodiaŭ esti transformitaj en pli rapidan kodon per asemblilo, kaj iujkelkaj malaltnivelaĵoj estas pli facile fareblaj en asembla lingvo. Iuj sistemdependajSistemdependaj 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.
 
== Eksteraj ligiloj ==
 
{{EL}} http://www.masm32nasm.com <!-- Mikrosofto _Macro_ _Assembler_ (_MASM_) -->us/
{{EL}} http://sourceforgeflatassembler.net/projects/nasm <!-- _NASM编译器_(_英文_) -->
{{EL}} http://c2.com/cgi/wiki?LearningAssemblyLanguage (angla) <!-- _PPR_: (Lerno, Lernante, Scienco) Asembleo Lingvo -->
{{EL}} http://flatassembler.net <!-- retejo -->
{{EL}} http://c2.com/cgi/wiki?LearningAssemblyLanguage <!-- _PPR_: (Lerno, Lernante, Scienco) Asembleo Lingvo -->
 
[[Kategorio:Programlingvoj]]
 
[[pl:Asembler#Język asemblera]]