Inafasiriwa moja kwa moja kutoka kwa Wikipedia ya Kiingereza na Tafsiri ya Google

Lugha ya Mkutano

Lugha ya mkusanyiko (au assembler ), [1] mara nyingi huchapishwa , ni lugha ya kiwango cha chini ya programu ya kompyuta , au kifaa kingine cha programu ambacho kina mawasiliano kati ya mara nyingi (lakini mara nyingi si moja hadi moja ) kati ya lugha na maagizo ya code ya usanifu wa mashine . Kila lugha ya kanisa ni maalum kwa usanifu fulani wa kompyuta. Kwa upande mwingine, lugha nyingi za programu za kiwango cha juu zinaweza kuambukizwa katika usanifu nyingi lakini zinahitaji kutafsiri au kuandaa . Lugha ya mkutano inaweza pia kuitwa kiashiria cha mashine ya mfano . [2]

Lugha ya Mkutano
Motorola 6800 Mkutano Lugha.png
Orodha ya Kusanyiko la Motorola MC6800, kuonyesha lugha ya kusanyiko ya awali na fomu iliyokusanyika
Paradigm Imperative , Unstructured
Kwanza ilionekana 1949 ; Miaka 68 iliyopita ( 1949 )

Lugha ya Mkutano inabadilishwa kuwa msimbo wa mashine ya kutekeleza kwa programu ya shirika inayojulikana kama mkutano . Utaratibu wa uongofu unajulikana kama mkusanyiko , au kukusanyika nambari ya chanzo . Wakati wa Mkutano ni hatua ya computational ambapo mkusanyiko ni kukimbia.

Lugha ya uundaji inatumia mnemonic kuwakilisha kila ngazi ya chini ya mashine maelekezo au opcode , kawaida pia kila rejista ya usanifu , bendera , nk shughuli mengi yanahitaji moja au zaidi operands ili kuunda maelekezo kamili na assemblers wengi wanaweza kuchukua maneno ya idadi na jina lake vikwazo pamoja na madaftari na maandiko kama waendeshaji, kumkomboa programu hiyo kutoka kwa mahesabu ya kurudia yenye kupendeza. Kulingana na usanifu, mambo haya inaweza pia kuwa pamoja kwa maelekezo maalum au kushughulikia njia kwa kutumia offsets au data nyingine pamoja na anwani za kudumu. Assemblers nyingi hutoa mifumo ya ziada ya kuwezesha maendeleo ya mpango, ili kudhibiti mchakato wa kanisa, na kwa misaada utatuzi .

Yaliyomo

Terminology

  • Mkusanyiko wa jumla unajumuisha kituo kikubwa cha ujenzi ili kwamba (parameterized) maandishi ya lugha ya kanisa inaweza kuwakilishwa kwa jina, na jina hilo linaweza kutumika kuingiza maandiko yaliyopanuliwa kwenye msimbo mwingine.
  • Mkutano wa msalaba (angalia pia msalaba msalaba ) ni mkusanyiko unaoendeshwa kwenye kompyuta au mfumo wa uendeshaji ( mfumo wa mwenyeji ) wa aina tofauti kutoka kwenye mfumo ambao kanuni inayofuata ni kukimbia ( mfumo wa lengo ). Kusanyiko la msalaba huwezesha maendeleo ya programu za mifumo isiyo na rasilimali za kuendeleza maendeleo ya programu, kama mfumo wa kuingizwa . Katika hali hiyo, kifaa cha kitu kilichosababisha lazima kihamishiwe kwenye mfumo wa lengo, ama kupitia kumbukumbu ya kusoma tu (ROM, EPROM , nk) au kiungo cha data kwa kutumia nakala halisi ya bit na code ya kitu au uwakilishi wa maandishi wa kanuni hiyo, kama vile rekodi ya Motorola S au Intel HEX .
  • Mkusanyiko wa ngazi ya juu ni programu ambayo hutoa vigezo vya lugha mara nyingi zinazohusishwa na lugha za juu, kama vile miundo ya juu ya kudhibiti ( IF / THEN / ELSE , DO CASE, nk) na aina za kiwango cha juu cha abstract, ikiwa ni pamoja na miundo / rekodi, vyama vya ushirika, madarasa, na kuweka.
  • Microassembler ni programu ambayo husaidia kuandaa microprogram , inayoitwa firmware , ili kudhibiti uendeshaji wa ngazi ya chini ya kompyuta.
  • Meta-assembler ni neno linalotumiwa kwenye miduara fulani kwa "programu ambayo inakubali maelezo ya syntactic na semantic ya lugha ya kanisa, na inazalisha muungano kwa lugha hiyo." [3]

Dhana muhimu

Assembler

Programu ya kukusanya inajenga msimbo wa kitu kwa kutafsiri mchanganyiko wa mnemonics na syntax kwa shughuli na kushughulikia njia katika viwango vyao vinavyofanana. Uwakilishi huu kwa kawaida hujumuisha msimbo wa operesheni (" opcode ") pamoja na bits nyingine za udhibiti na data. Mkutano pia huhesabu maneno ya mara kwa mara na kutatua majina ya mfano kwa maeneo ya kumbukumbu na vyombo vingine. [4] Matumizi ya kumbukumbu za mfano ni kipengele muhimu cha washirika, kuokoa mahesabu yenye kupendeza na sasisho za anwani za mwongozo baada ya marekebisho ya programu. Assemblers nyingi pia ni pamoja na jumla vifaa kwa ajili ya kufanya textual badala - kwa mfano, ili kuzalisha kawaida mipangilio mifupi ya maelekezo kama inline , badala ya kuitwa subroutines .

Baadhi assemblers pia kuwa na uwezo wa kufanya baadhi ya aina rahisi ya maelekezo kuweka -specific uimarishaji . Mfano mmoja halisi wa hii inaweza kuwa wajumbe wa jumla wa x86 kutoka kwa wauzaji mbalimbali. Wengi wao wanafanya nafasi za kuruka-maelekezo (kuruka kwa muda mrefu badala ya kuruka kwa muda mfupi au jamaa) katika idadi yoyote ya kupita, kwa ombi. Wengine wanaweza hata kufanya marekebisho rahisi au kuingizwa kwa maagizo, kama vile washirika fulani wa usanifu wa RISC ambao wanaweza kusaidia kuongeza ratiba ya maelekezo ya busara ili kutumia bomba la CPU kwa ufanisi iwezekanavyo. [ citation inahitajika ]

Kama lugha za mapema programu kama vile Fortran , Algol , Cobol na Lisp , assemblers wamekuwa inapatikana tangu miaka ya 1950 na vizazi vya kwanza vya maandishi ya msingi ya kompyuta . Hata hivyo, washirika walikuja kwanza kama wao ni rahisi sana kuandika kuliko washiriki wa lugha za juu . Hii ni kwa sababu kila mnemonic pamoja na njia za kushughulikia na operesheni ya maelekezo hutafsiri moja kwa moja kwenye uwakilishi wa namba za maelekezo fulani, bila mazingira mengi au uchambuzi. Pia kuna makundi kadhaa ya watafsiri na jenereta za nusu moja kwa moja za vifaa na mali zinazofanana na lugha zote za mkutano na za juu , na speedcode kama labda moja ya mifano inayojulikana zaidi.

Kunaweza kuwa na makusanyiko kadhaa na syntax tofauti kwa CPU fulani au maelekezo ya kuweka usanifu . Kwa mfano, maagizo ya kuongeza data ya kumbukumbu kwenye rejista katika mchakato wa x86 -familia inaweza add eax,[ebx] , katika syntax ya awali, wakati hii addl (%ebx),%eax katika addl (%ebx),%eax ya AT & T iliyotumiwa na GNU Assembler . Licha ya maonyesho tofauti, fomu mbalimbali za synthetic kwa ujumla zinazalisha msimbo wa mashine sawa, ona zaidi chini. Mkusanyiko mmoja anaweza pia kuwa na njia tofauti ili kuunga mkono tofauti katika aina za syntactic pamoja na tafsiri zao za semantic halisi (kama FASM -syntax, TASM -syntax, mode bora nk, katika kesi maalum ya programu ya mkutano wa x86 ).

Idadi ya kupitisha

Kuna aina mbili za makusanyiko kulingana na jinsi ngapi hupita kwa njia ya chanzo inahitajika (mara ngapi assembler inasoma chanzo) kuzalisha faili kitu.

  • Washirika wa kupitisha moja hupita kupitia msimbo wa chanzo mara moja. Ishara yoyote iliyotumiwa kabla ya kufafanuliwa itahitaji "errata" mwishoni mwa msimbo wa kitu (au, angalau, hakuna mapema kuliko uhakika ambapo ishara inafafanuliwa) akiambia kiungo au mzigo wa "kurudi" na kuandika tena kizingiti ambacho kilikuwa kimeachwa ambapo ishara bado haijafafanuliwa ilitumiwa.
  • Washirikisha wengi wa kupitisha huunda meza na alama zote na maadili yao katika vifungu vya kwanza, kisha tumia meza kwenye hati za baadaye ili kuzalisha msimbo.

Katika matukio hayo yote, mkusanyiko lazima awe na uwezo wa kuamua ukubwa wa kila maelekezo juu ya kupitisha awali ili kuhesabu anwani za alama zinazofuata. Hii inamaanisha kwamba ikiwa ukubwa wa operesheni inayohusu operesheni inayoelezwa baadaye inategemea aina au umbali wa operesheni, mkutano hufanya makadirio ya kutisha wakati wa kwanza kukutana na uendeshaji, na ikiwa ni lazima kuifanya kwa moja au zaidi " hakuna- uendeshaji "maagizo katika kupita baadaye au errata. Katika mkusanyiko wenye ujuzi wa peephole , anwani zinaweza kuingizwa kati ya vifungu ili kuruhusu kuchukua nafasi ya msimbo wa tamaa na msimbo uliofaa kwa umbali halisi kutoka kwa lengo.

Sababu ya awali ya matumizi ya wachezaji wa kupitisha moja ilikuwa kasi ya kusanyiko - mara nyingi kupitisha kwa pili kunahitaji kuimarisha na kurejesha tena chanzo cha programu kwenye mkanda au kurejea staha ya kadi au kukikwa kwenye karatasi . Hatimaye kompyuta zilizo na kumbukumbu kubwa zaidi (hasa kuhifadhi kuhifadhi), zilikuwa na nafasi ya kufanya usindikaji wote muhimu bila kusoma tena. Faida ya multi-pass assembler ni kwamba ukosefu wa errata hufanya mchakato wa kuunganisha (au mzigo wa programu ikiwa mkutano hutoa moja kwa moja kanuni ya kutekeleza) kwa kasi. [5]

Mfano: katika snippet ya kanuni zifuatazo mkutano wa moja-pass angeweza kuamua anwani ya BKWD ya nyuma nyuma ya kukusanya taarifa S2 , lakini hawezi kuamua anwani ya FWD ya kumbukumbu ya mbele wakati wa kukusanya taarifa ya tawi S1 ; kweli FWD inaweza kuwa isiyojulikana. Mkutano wa mbili-kupita ungeamua anwani zote mbili katika kipindi cha 1, hivyo watajulikana wakati wa kuzalisha msimu katika kipindi cha 2,

S1 B FWD
  ...
FWD EQU *
  ...
BKWD EQU *
  ...
S2 B BKWD

Wasanidi wa ngazi ya juu

Wasajili zaidi wa ngazi ya juu hutoa vikwazo vya lugha kama vile:

  • Utaratibu wa kiwango cha juu / utabiri wa kazi na matakwa
  • Miundo ya udhibiti wa juu
  • Aina ya data ya juu ya abstract, ikiwa ni pamoja na miundo / rekodi, vyama vya wafanyakazi, madarasa, na seti
  • Usindikaji wa kisasa wa kisasa (ingawa inapatikana kwa washirika wa kawaida tangu mwishoni mwa miaka ya 1950 kwa IBM 700 mfululizo na tangu miaka ya 1960 kwa IBM / 360 , kati ya mashine nyingine)
  • Vipengele vinavyotokana na vitu vinavyotokana na vitu kama vile madarasa , vitu , kinyume , polymorphism , na urithi [6]

Tazama muundo wa lugha chini kwa maelezo zaidi.

Lugha ya Bunge

Programu iliyoandikwa katika lugha ya kanisa ina mfululizo wa maelekezo ya mchakato wa mnemonic na maelezo ya meta (inayojulikana kwa njia mbalimbali kama maagizo, maelekezo ya pseudo na maelekezo ya pseudo-ops), maoni na data. Maagizo ya lugha ya mkutano hujumuisha mnemonic ya opcode ikifuatiwa na orodha ya data, hoja au vigezo. [7] Hizi zinatafsiriwa na mkusanyiko katika maagizo ya lugha ya mashine ambayo yanaweza kubeba kwenye kumbukumbu na kutekelezwa.

Kwa mfano, maelekezo ya chini yanaelezea mchakato wa x86 / IA-32 kuhamisha thamani ya haraka ya 8-bit katika rejista . Msimbo wa binary kwa maagizo haya ni 10110 ikifuatiwa na kitambulisho cha 3-bit ambacho husajili kujiandikisha. Kitambulisho cha rejista ya AL ni 000, hivyo kanuni ya kufuata mashine inaleta usajili wa AL na data 01100001. [8]

10110000 01100001

Nambari hii ya kompyuta ya binary inaweza kufanywa kwa urahisi zaidi kwa kuifanya kwa hexadecimal kama ifuatavyo.

B0 61

Hapa, B0 inamaanisha 'Hoja nakala ya thamani ifuatayo katika AL' , na 61 ni uwakilishi wa hexadecimal ya thamani 01100001, ambayo ni 97 katika decimal . Lugha ya mkutano wa familia ya 8086 hutoa MOV mnemonic (kifupi ya hoja ) kwa maelekezo kama hii, hivyo kanuni ya mashine hapo juu inaweza kuandikwa kama ifuatavyo katika lugha ya kanisa, kamili na maoni ya ufafanuzi ikiwa inahitajika, baada ya semicolon. Hii ni rahisi kusoma na kukumbuka.

MOV AL , 61h ; Weka AL na decimal 97 (61 hex)

Katika lugha nyingine za mkutano huo mnemonic kama vile MOV inaweza kutumika kwa familia ya maagizo yanayohusiana na upakiaji, kuiga na kusonga data, ikiwa ni maadili ya haraka, maadili kwenye kumbukumbu, au maeneo ya kumbukumbu yaliyoelezwa na maadili katika madaftari. Washiriki wengine wanaweza kutumia mstari wa kipekee wa opcode kama L kwa "hoja ya kumbukumbu kuandikisha", ST kwa "hoja ya kujiandikisha kwa kumbukumbu", LR kwa "hoja ya kusajili kujiandikisha", MVI kwa "hoja ya haraka ya kumbukumbu kwenye kumbukumbu", nk.

Optimiza ya x86 10110000 ( B0 ) ya nakala ya 8-bit katika rejista ya AL , wakati 10110001 ( B1 ) inaiingiza kwenye CL na 10110010 ( B2 ) inafanya hivyo kwenye DL . Mifano ya lugha ya mkutano kwa kufuata hizi. [8]

MOV AL , 1h ; Weka AL kwa thamani ya haraka 1
MOV CL , 2h ; Weka CL na thamani ya haraka 2
MOV DL , 3h ; Weka DL kwa thamani ya haraka 3

Syntax ya MOV inaweza pia kuwa ngumu zaidi kama mifano zifuatazo zinaonyesha. [9]

MOV EAX , [ EBX ] ; Ondoa bytes 4 katika kumbukumbu kwenye anwani iliyo katika EBX katika EAX
MOV [ ESI + EAX ], CL ; Ondoa yaliyomo ya CL katika oto kwa anwani ESI + EAX

Katika kila kesi, MOV mnemonic inatafsiriwa moja kwa moja kwenye opcode katika safu ya 88-8E, A0-A3, B0-B8, C6 au C7 kwa mkutano, na programu hiyo haifai kujua au kukumbuka ambayo. [8]

Kubadili lugha ya mkutano katika kanuni za mashine ni kazi ya kukusanya, na reverse inaweza angalau kupatikana kwa dassembler . Tofauti na lugha za kiwango cha juu , kuna mawasiliano ya moja hadi moja kati ya kauli nyingi za mkusanyiko rahisi na maagizo ya lugha ya mashine. Hata hivyo, wakati mwingine, mkutano huweza kutoa pseudoinstructions (kimsingi macros) ambayo hupanua katika maelekezo kadhaa ya lugha ya mashine ili kutoa kazi zinazohitajika. Kwa mfano, kwa mashine isiyo na "tawi ikiwa ni maagizo makubwa au sawa," mkutano huweza kutoa pseudoinstruction ambayo huongeza kwa mashine "kuweka kama chini ya" na "tawi ikiwa sifuri (kutokana na matokeo ya maagizo yaliyowekwa") . Wasajili wengi wanaojumuisha pia hutoa lugha ya utajiri mkubwa (kujadiliwa hapa chini) ambayo hutumiwa na wachuuzi na waandaaji ili kuzalisha utaratibu zaidi wa kificho na data.

Kila usanifu wa kompyuta una lugha yake mwenyewe ya mashine. Kompyuta zinatofautiana katika idadi na aina ya shughuli wanazoiunga, kwa ukubwa tofauti na nambari za usajili, na katika uwakilishi wa data kuhifadhiwa. Wakati kompyuta nyingi za kusudi zima zinaweza kutekeleza kazi sawa, njia ambazo hufanya hivyo ni tofauti; lugha za sambamba zinaonyesha tofauti hizi.

Vipengele vingi vya mnemonics au syntax ya lugha ya mkutano inaweza kuwepo kwa kuweka moja ya maelekezo, kwa kawaida kuanzishwa katika programu tofauti za kukusanyika. Katika matukio haya, maarufu zaidi hutolewa na mtengenezaji na kutumika katika nyaraka zake.

Usanidi wa lugha

Mambo ya msingi

Kuna kiwango kikubwa cha utofauti kwa namna waandishi wa makusanyiko wanavyoelezea kauli na katika nomenclature wanazotumia. Hasa, baadhi huelezea chochote isipokuwa mashine mnemonic au kupanuliwa mnemonic kama opseudo-operesheni (pseudo-op). Lugha ya kawaida ya mkusanyiko ina aina 3 za taarifa za maelekezo ambayo hutumiwa kufafanua shughuli za programu:

  • Opcode mnemonics
  • Maelekezo ya data
  • Maagizo ya Mkutano

Opcode mnemonics na kupanuliwa mnemonics

Maelekezo (kauli) katika lugha ya kanisa kwa kawaida ni rahisi sana, tofauti na wale walio katika lugha za juu . Kwa ujumla, mnemonic ni jina la mfano kwa maagizo ya lugha moja ya mashine ya kutekeleza ( opcode ), na kuna angalau moja ya mchoro wa opcode inayoelezwa kwa kila maagizo ya lugha ya mashine. Kila maelekezo ina kawaida operesheni au opcode pamoja na zero au zaidi operands . Maelekezo mengi yanataja thamani moja, au jozi ya maadili. Operesheni inaweza kuwa ya haraka (thamani iliyosajiliwa katika maagizo yenyewe), madaftari yaliyotajwa katika maagizo au maana, au anwani za data ziko mahali pengine katika uhifadhi. Hii imedhamiriwa na usanifu wa usindikaji wa msingi: mkusanyiko huonyesha tu jinsi kazi hii ya usanifu inavyofanya. Mara nyingi mnemonics hutumiwa kutaja mchanganyiko wa opcode na operesheni maalum, kwa mfano, washirika wa System / 360 hutumikia B kama mnemonic wa BC kwa mask ya 15 na NOP ("NO OPeration" - msifanye chochote kwa hatua moja ) kwa BC na mask ya 0.

Mara nyingi mnemonics hutumiwa kuunga mkono matumizi maalumu ya maagizo, mara nyingi kwa madhumuni sio dhahiri kutoka kwa jina la mafundisho. Kwa mfano, CPU nyingi hazina maelekezo ya NOP wazi, lakini una maelekezo ambayo yanaweza kutumika kwa madhumuni. Katika 8086 CPU mafundisho xchg ax , ax hutumiwa nop , pamoja na nop kuwa Pseudo-opcode kwa encode maelekezo xchg ax , ax . xchg ax , ax wengine wanatambua hili na xchg ax , ax ya xchg ax , ax maelekezo ya xchg ax , ax kama nop . Vile vile, IBM assemblers kwa System / 360 na System / 370 kutumia mnemonics kupanuliwa NOP na NOPR kwa BC na BCR na masks sifuri. Kwa usanifu wa SPARC, haya hujulikana kama maelekezo ya maandishi . [10]

Washiriki wengine pia huunga mkono maelekezo mafupi ya kujengwa yaliyojitokeza ambayo yanazalisha maagizo mawili au zaidi ya mashine. Kwa mfano, pamoja na baadhi ya washirika wa Z80 maelekezo ld hl,bc inatambulika kuzalisha ld l,c ikifuatiwa na ld h,b . [11] Hizi zinajulikana kama pseudo-opcodes .

Mnemonics ni ishara ya uongo; mwaka wa 1985 IEEE ilichapisha Standard 694 kwa seti ya sare ya mnemonics ili kutumiwa na washirika wote. Kiwango hicho kimeondolewa.

Maelekezo ya data

Kuna maagizo yaliyotumiwa kufafanua vipengele vya data kushikilia data na vigezo. Wafafanua aina ya data, urefu na usawa wa data. Maelekezo haya yanaweza pia kufafanua ikiwa data inapatikana kwa programu za nje (programu zilizokusanywa tofauti) au tu kwa mpango ambao sehemu ya data inatafanuliwa. Baadhi ya washirika hufafanua haya kama ops pseudo-ops.

Maagizo ya Mkutano

Maagizo ya Mkutano, pia huitwa pseudo-opcodes, shughuli za pseudo-operesheni au pseudo-ops, ni amri zinazotolewa kwa mkusanyiko "akiiongoza kufanya kazi badala ya maelekezo ya kukusanyika.". [4] Maagizo yanaathiri jinsi mkusanyiko anavyofanya na "yanaweza kuathiri msimbo wa kitu, meza ya ishara, faili ya orodha, na maadili ya vigezo vya ndani vya kukusanya." Wakati mwingine neno pseudo-opcode limehifadhiwa kwa maagizo ambayo yanazalisha code ya kitu, kama vile wale wanaozalisha data. [12]

Majina ya ops pseudo mara nyingi huanza na dot ili kuwafautisha kutoka maelekezo ya mashine. Ose za pseudo zinaweza kufanya mkusanyiko wa programu inategemea vigezo vya kuingizwa na programu, hivyo kwamba programu moja inaweza kukusanyika njia tofauti, labda kwa matumizi tofauti. Au, pseudo-op inaweza kutumika kutumikia uwasilishaji wa programu ili iwe rahisi kusoma na kudumisha. Matumizi mengine ya kawaida ya pseudo-ops ni kuhifadhi maeneo ya hifadhi kwa data ya wakati wa kukimbia na kwa hiari kuanzisha yaliyomo yao kwa maadili inayojulikana.

Wafanyakazi wa kawaida wanawawezesha wanajumuisha majina ya kiholela ( maandiko au alama ) na maeneo ya kumbukumbu na vipindi mbalimbali. Kwa kawaida, kila mara na ya kutofautiana hupewa jina ili maagizo yanaweza kutaja maeneo hayo kwa jina, na hivyo kukuza kanuni za kibinafsi . Katika msimbo unaoweza kutekelezwa, jina la kila subroutine linahusishwa na hatua yake ya kuingia, hivyo simu yoyote ya subroutine inaweza kutumia jina lake. Vipindi vya ndani, maeneo ya GOTO hupewa maandiko. Washiriki wengine wanasaidia alama za mitaa ambazo zimefahamishwa kwa kawaida na alama za kawaida (kwa mfano, matumizi ya "$ 10" kama mahali pa GOTO).

Washiriki wengine, kama vile NASM, hutoa usimamizi wa ishara rahisi, kuruhusu wajumbe kusimamia nafasi tofauti za majina , na kuhesabu moja kwa moja vituo vya ndani ya miundo ya data , na kutoa majarida yanayotajwa kwa maadili halisi au matokeo ya mahesabu ya rahisi yaliyotengenezwa na assembler. Maandiko pia yanaweza kutumika kuanzisha mara kwa mara na vigezo na anwani zinazohamishwa.

Lugha za Mkutano, kama lugha nyingi za kompyuta, kuruhusu maoni kuongezwa kwenye msimbo wa chanzo cha programu ambayo itafunguliwa wakati wa mkusanyiko. Maoni ya jadi ni muhimu katika mipango ya lugha za kanisa, maana maana na lengo la mlolongo wa maagizo ya mashine ya binary inaweza kuwa vigumu kuamua. Lugha ya mkutano wa "ghafi" (isiyosaidiwa) inayotokana na washirika au wasimamaji ni vigumu sana kusoma wakati mabadiliko yanapaswa kufanywa.

Macros

Washiriki wengi wanasaidia macros yaliyotanguliwa , na wengine wanaunga mkono macros - na mara kwa mara yanayefafanuliwa) yanayotokana na mfululizo wa mistari ya maandishi ambayo vigezo na vidonge vinaingizwa. Mlolongo huu wa mistari ya maandiko inaweza kujumuisha opcodes au maelekezo. Mara moja ya jumla imeelezwa jina lake linaweza kutumika badala ya mnemonic. Wakati mkusanyiko anavyofanya taratibu hiyo, inachukua nafasi ya kauli hiyo na mistari ya maandishi yanayohusiana na hiyo kubwa, kisha huwafanyia kama ipo katika faili ya msimbo wa chanzo (ikiwa ni pamoja na, katika baadhi ya makusanyiko, upanuzi wa macros yoyote iliyopo katika maandishi ya uingizaji) . Macros katika tarehe hii ya maana kwa waendeshaji IBM wa miaka ya 1950. [ citation inahitajika ]

Katika lugha ya kanisa, neno "macro" linamaanisha dhana zaidi zaidi kuliko ilivyo katika mazingira mengine, kama vile lugha ya programu ya C , ambako maagizo yake ya #define hutumiwa kuunda macros mstari wa kawaida. Maelekezo machunguzi ya Assembler, kama macros katika PL / I na lugha zingine, zinaweza kuwa "mipango" ndefu yenyewe, iliyofanyika kwa tafsiri na mkutano wakati wa kusanyiko.

Kwa kuwa macros inaweza kuwa na majina 'mafupi' lakini yanapanua kwa mistari kadhaa au kwa kweli nyingi, zinaweza kutumiwa kufanya programu za lugha za mkutano zinaonekana kuwa mfupi sana, zinahitaji mistari machache ya msimbo wa chanzo, kama na lugha za kiwango cha juu. Wanaweza pia kutumika kuongeza viwango vya juu vya muundo kwa mipango ya mkutano, kwa hiari kuanzisha msimbo wa kufuta debugging iliyoingia kupitia vigezo na vipengele vingine vinavyofanana.

Mara nyingi washirika wa Macro huruhusu macros kuchukua vigezo . Baadhi ya makusanyiko hujumuisha lugha nyingi za kisasa, kuingiza vipengele vile vya lugha ya juu kama vigezo vya hiari, vigezo vya mfano, vifurushi, uendeshaji wa kamba, na shughuli za hesabu, zinazotumiwa wakati wa utekelezaji wa kiasi fulani, na kuruhusu macros kuhifadhi habari au kubadilishana habari . Hivyo macro inaweza kuzalisha maelekezo mengi ya lugha ya mkutano au data, kulingana na hoja kubwa. Hii inaweza kutumika kwa kuunda miundo ya data ya rekodi au "safu" zisizofunguliwa, kwa mfano, au inaweza kuzalisha algorithms kamili kulingana na vigezo vingi. Kwa mfano, "aina" ya jumla inaweza kukubali vipimo vya ufunguo wa aina tata na kuzalisha msimbo uliofanywa kwa ufunguo maalum, usiohitaji vipimo vya wakati wa kukimbia ambavyo vinahitajika kwa utaratibu wa jumla kutafsiri vipimo. Shirika linalotumia lugha ya kanisa ambalo limeongezwa kwa kutumia sura hii kubwa inaweza kuchukuliwa kuwa inafanya kazi katika lugha ya kiwango cha juu, kwani programu hiyo haifanyi kazi na vipengele vya chini vya kiwango cha kompyuta. Akielezea hatua hii, macros zilizotumiwa kutekeleza mashine ya awali ya SNOBOL4 (1967), iliyoandikwa katika lugha ya SNOBOL Utekelezaji (SIL), lugha ya kusanyiko kwa mashine ya kawaida, ambayo ilikuwa imetengwa kwa mashine za kimwili kwa kugeuzwa kwa asili ya kukusanyika kupitia mkusanyiko mkubwa . [13] Hii iliruhusu kiwango cha juu cha kutosha kwa muda.

Macros ilitumiwa kupangia mifumo ya programu kubwa kwa wateja maalum katika zama kuu na pia kutumika kwa wafanyakazi wa wateja ili kukidhi mahitaji ya waajiri wao kwa kufanya matoleo maalum ya mifumo ya uendeshaji wa mtengenezaji. Hii ilifanyika, kwa mfano, na waendeshaji wa mifumo wanaofanya kazi na Mfumo wa Ufuatiliaji wa Mazungumzo ya IBM / Mfumo wa Virtual ( VM / CMS ) na kwa kuongeza nyongeza za IBM ya usindikaji wa wakati, Mfumo wa Udhibiti wa Taarifa ya Wateja CICS , na ACP / TPF , mfumo wa ndege / fedha ambao ulianza miaka ya 1970 na bado unatumia mifumo mingi ya uhifadhi wa kompyuta (CRS) na mifumo ya kadi ya mkopo leo.

Pia inawezekana kutumia uwezo mkuu wa usindikaji wa kukusanyika ili kuzalisha msimbo ulioandikwa kwa lugha tofauti, kwa mfano, kuzalisha toleo la programu katika COBOL kutumia mpango safi wa kukusanya macro unao mistari ya kanuni ya COBOL ndani ya waendeshaji wakati wa mkutano kufundisha assembler ili kuzalisha code ya kiholela. IBM OS / 360 inatumia macros kufanya kizazi cha mfumo . Mtumiaji anaelezea chaguzi kwa kuandika mfululizo wa macros ya kukusanya. Kukusanya macros haya huzalisha mkondo wa kazi ili kujenga mfumo, ikiwa ni pamoja na lugha ya kudhibiti kazi na kauli za udhibiti wa matumizi .

Hii ni kwa sababu, kama ilivyotambulika katika miaka ya 1960, dhana ya "usindikaji mkubwa" ni huru na dhana ya "mkusanyiko", wa zamani kuwa katika maneno ya kisasa zaidi ya usindikaji neno, usindikaji wa maandiko, kuliko kuzalisha code code. Dhana ya usindikaji mkubwa ilionekana, na inaonekana, katika lugha ya C ya programu, ambayo inasaidia "maelekezo ya preprocessor" kuweka vigezo, na kufanya vipimo vya masharti juu ya maadili yao. Kumbuka kwamba tofauti na wasindikaji wa awali wa awali ndani ya washirika, C preprocessor sio Turing-amekamilika kwa sababu hawana uwezo wa kuzunguka au "kwenda kwa", programu za kuruhusu kuruhusu.

Licha ya nguvu za usindikaji wa jumla, ilitumia matumizi ya lugha nyingi za juu (tofauti kubwa kuwa C , C ++ na PL / I ) wakati wa kudumu kwa mikusanyiko.

Mchapishaji wa parameter ya Macro ni madhubuti kwa jina: wakati wa usindikaji wa jumla, thamani ya parameter imebadilishwa kwa jina lake. Darasa maarufu sana la mende lililokuwa limekuwa ni matumizi ya parameter ambayo yenyewe ilikuwa maneno na siyo jina rahisi wakati mwandishi mkuu alitarajia jina. Katika jumla:

foo: macro a
Weka * b

nia ilikuwa kwamba mpigaji atatoa jina la kutofautiana, na variable ya "kimataifa" au mara kwa mara b itatumika kuzidisha "a". Ikiwa foo inaitwa na ac , ac upanuzi mkubwa wa load ac*b hutokea. Ili kuepuka uelewa wowote iwezekanavyo, watumiaji wa wasindikaji wa jumla wanaweza kuunga mkono vigezo rasmi ndani ya ufafanuzi mkubwa, au wapiga simu wanaweza kuunga mkono vigezo vya uingizaji. [14]

Msaada kwa ajili ya programu iliyopangwa

Baadhi ya washirika wameingiza vipengele vya programu ambavyo vinajumuisha mtiririko wa utekelezaji. Mfano wa kwanza wa mbinu hii ulikuwa katika kuweka ya Dhana ya 14 , awali iliyopendekezwa na Dk. Harlan Mills (Machi 1970), na kutekelezwa na Marvin Kessler katika Shirikisho la Shirikisho la Shirikisho la IBM, ambalo lilipanua S / 360 macro assembler na IF / ELSE / ENDIF na vitalu sawa vya kudhibiti mtiririko. [15] Hii ilikuwa njia ya kupunguza au kuondoa matumizi ya Goto kazi mwaka mkutano code, moja ya sababu kuu na kusababisha tambi code kwa lugha mkutano. Njia hii ilikubaliwa sana katika "miaka ya 80" mapema (siku za mwisho za matumizi makubwa ya lugha ya mkutano).

Mpangilio wa curious ulikuwa wa asili , "mzunguko-oriented" kukusanyika kwa 8080 / Z80 processors [ kinachohitajika ] kutoka Whitesmiths Ltd. (watengenezaji wa Unix -kama Idris mfumo wa uendeshaji, na kile kilichoripotiwa kuwa ya kwanza ya kibiashara C compiler ). Lugha ilitambulishwa kama mkusanyiko, kwa sababu ilifanya kazi na vipengele vya mashine ghafi kama vile opcodes , madaftari , na kumbukumbu za kumbukumbu; lakini imejumuisha syntax ya kuelezea ili kuonyesha utaratibu wa utekelezaji. Madawa na alama nyingine maalum, pamoja na ujenzi wa mipangilio iliyojenga mipangilio ya kuzuia, kudhibitiwa mlolongo wa maagizo yaliyotokana. A asili ilijengwa kama lugha ya kitu cha C compiler, badala ya coding mkono, lakini syntax yake mantiki alishinda mashabiki wengine.

Kumekuwa na mahitaji ya dhahiri ya makusanyiko ya kisasa zaidi tangu kushuka kwa maendeleo makubwa ya lugha ya mkutano. [16] Licha ya hayo, bado wanaendelezwa na kutumiwa wakati ambapo vikwazo vya rasilimali au maalum katika usanifu wa mfumo wa lengo huzuia matumizi mazuri ya lugha za kiwango cha juu. [17]

Wafanyakazi walio na injini ya nguvu kubwa huwezesha programu iliyopangwa kupitia macros, kama vile mabadiliko mengi yaliyotolewa na mfuko wa Masm32 (kumbuka kificho hiki ni mpango kamili):

jumuisha \ masm32 \ pamoja \ masm32rt.inc ; tumia maktaba Masm32

.code
demomain:
  REPEAT 20
	kubadili RV ( nuru , 9 ) ; kuzalisha namba kati ya 0 na 8
	MOV ecx, 7
	kesi 0
		magazeti "kesi 0"
	kesi ecx ; kinyume na lugha nyingi za programu,
		magazeti "kesi 7" ; kubadili Masm32 inaruhusu "kesi za kutofautiana"
	kesi 1 .. 3
		.Kama eax == 1
			magazeti "kesi 1"
		.elseif eax == 2
			magazeti "kesi 2"
		.a
			magazeti "kesi 1 hadi 3: zingine"
		.endif
	kesi 4 , 6 , 8
		magazeti "kesi 4, 6 au 8"
	default
		MOV ebx, 19; magazeti nyota 20
		Rudia
			magazeti "*"
			dec ebx
		.Until Si gn? ; kitanzi hadi bendera ya ishara itoe
	kuishia
	shika ch r $ ( 13 , 10 )
  ENDM
  Utgång
mwisho wa demomain

Matumizi ya lugha ya kanisa

Historia mtazamo

Lugha za Mkutano, na matumizi ya mkutano wa neno, tarehe ya kuanzishwa kwa kompyuta iliyohifadhiwa . Lugha ya kwanza ya kanisa ilianzishwa mwaka 1947 na Kathleen Booth kwa ARC2 huko Birkbeck, Chuo Kikuu cha London kufuatia kazi na John von Neumann na Herman Goldstine katika Taasisi ya Utafiti wa Juu . [18] [19] Uhifadhi wa umeme wa kurejesha kwa moja kwa moja ( Calculator Automatic Calculator (EDSAC) ulikuwa na mkusanyiko aliwaita maagizo ya awali yaliyo na barua moja ya mnemonti mnamo mwaka 1949. [20] SAPA (Programu ya Mkutano wa Mkutano wa Ufanisi) ilikuwa lugha ya kusanyiko kwa kompyuta ya IBM 650 iliyoandikwa na Stan Poley mwaka wa 1955. [21]

Lugha za Mkutano zinaondoa mengi ya programu za kizazi cha kwanza ambazo husababishwa na hitilafu, zenye uchochezi, na za muda zinahitajika kwa kompyuta za mwanzo, zikifungua programu kutoka kwa kasi kama vile kukumbuka namba za simu na kuhesabu anwani. Walikuwa kutumika mara nyingi sana kwa kila aina ya programu. Hata hivyo, kwa miaka ya 1980 (miaka ya 1990 juu ya wadau wa microcomputers ), matumizi yao yalikuwa yamepatikana kwa lugha za juu, katika kutafuta uzalishaji bora wa programu . Leo lugha ya kanisa bado hutumiwa kwa uharibifu wa vifaa vya moja kwa moja, upatikanaji wa maelekezo maalum ya processor, au kushughulikia masuala muhimu ya utendaji. Matumizi ya kawaida ni madereva ya kifaa , mifumo ya chini iliyoingia , na mifumo ya muda halisi .

Kwa kihistoria, programu nyingi zimeandikwa kabisa katika lugha ya kanisa. Mifumo ya uendeshaji iliandikwa kabisa katika lugha ya mkutano hadi kuanzishwa kwa Burroughs MCP (1961), iliyoandikwa katika lugha ya Mtendaji wa Tatizo la Oriented Oriented (ESPOL), lugha ya Algol. Maombi mengi ya kibiashara yaliandikwa katika lugha ya kanisa pia, ikiwa ni pamoja na kiasi kikubwa cha programu ya IBM kuu iliyoandikwa na mashirika makubwa. COBOL , FORTRAN na PL / I hatimaye walihamia kazi nyingi, ingawa idadi kubwa ya mashirika makubwa yaliendelea kuwa na miundombinu ya maombi ya lugha ya mkutano hadi miaka ya 1990.

Wachunguzi wengi wa mapema walitegemea lugha ya mkutano wa nakala, ikiwa ni pamoja na mifumo mingi ya uendeshaji na programu kubwa. Hii ni kwa sababu mifumo hii ilikuwa na vikwazo vyenye vyanzo vya rasilimali kubwa, kumbukumbu za idiosyncratic zilizowekwa na kuonyesha majengo ya usanifu, na zinazotolewa huduma ndogo za mfumo wa buggy. Labda muhimu zaidi ni ukosefu wa washirika wa lugha ya kwanza ya darasa la juu wanaofaa kwa matumizi ya microcomputer. Sababu ya kisaikolojia inaweza pia kuwa na jukumu: kizazi cha kwanza cha waendeshaji wa microcomputer alibaki mtazamaji, "waya na pliers" mtazamo.

Katika muktadha zaidi wa biashara, sababu kubwa za kutumia lugha ya kanisa zilikuwa ndogo sana (ukubwa), zaidi ya juu, kasi kubwa, na kuaminika.

Mifano ya kawaida ya programu kubwa za lugha za mkutano kutoka wakati huu ni mifumo ya uendeshaji ya IBM PC DOS , mtunzi wa Turbo Pascal na maombi mapema kama mpango wa spreadsheet Lotus 1-2-3 . Kwa mujibu wa wengine [ nani? ] sekta ya ushirika, lugha ya kanisa ndiyo lugha bora ya kompyuta ya kutumia ili kupata utendaji bora zaidi kutoka kwa Sega Saturn , console ambayo ilikuwa ni changamoto ya kuendeleza na programu za programu. [22] mchezo wa 1993 wa NBA Jam ni mfano mwingine.

Lugha ya Bunge imekuwa lugha ya maendeleo ya msingi kwa kompyuta nyingi za nyumbani za miaka ya 1980 na 1990 (kama vile MSX , Sinclair ZX Spectrum , Commodore 64 , Commodore Amiga , na Atari ST ). Hii ilikuwa sehemu kubwa kwa sababu tafsiri za BASIC juu ya mifumo hii zinazotolewa kasi ya utekelezaji wa kutosha, pamoja na vifaa vingi vya kutosha kutumia vifaa vilivyopo kwenye mifumo hii. Mifumo mingine ina hata mazingira ya maendeleo ya pamoja (IDE) yenye vifaa vya kupotosha sana na vifaa vingi. Washiriki wengine wanapatikana kwa Radi ya Radio Shack TRS-80 na wafuasi wake walikuwa na uwezo wa kuchanganya chanzo cha mkutano wa ndani na kauli za programu za juu. Baada ya kukusanya mkusanyiko uliojengwa huzalisha msimbo wa mashine ya ndani.

Matumizi ya sasa

Kulikuwa na mjadala juu ya manufaa na utendaji wa lugha ya kanisa na lugha za juu. Lugha ya Mkutano ina matumizi ya niche maalum ambapo ni muhimu; angalia chini. Kuanzia mwezi wa Julai 2017 , ripoti ya TIOBE ya umaarufu wa lugha ya programu inaunda lugha ya mkutano saa 11, mbele ya Visual Basic , kwa mfano. [23] Assembler inaweza kutumika kuongeza kasi au kuboresha ukubwa. Katika kesi ya ufanisi wa kasi, wasanidi wa kisasa wa kuimarisha wanasemekana [24] kutoa lugha za kiwango cha juu katika msimbo ambao unaweza kukimbia haraka kama mkutano ulioandikwa mkono, licha ya mifano ya kukabiliana nayo ambayo inaweza kupatikana. [25] [26] [27] Ugumu wa wasindikaji wa kisasa na mifumo ndogo ya kumbukumbu hufanya ufanisi wa ufanisi inazidi kuwa vigumu kwa washiriki, pamoja na programu za mkutano. [28] [29] Zaidi ya hayo, kuongezeka kwa utendaji wa processor imesababisha kuwa CPU nyingi hukaa zaidi wakati, [30] na ucheleweshaji unaosababishwa na vikwazo vinavyotarajiwa kama vile kupoteza cache, shughuli za I / O na kupiga kura . Hii imefanya kasi ya utekelezaji wa msimbo wa mbichi sio suala la wasimamizi wengi.

Kuna baadhi ya hali ambayo watengenezaji wanaweza kuchagua kutumia lugha ya kanisa:

  • Agizo pekee ya kutekeleza ukubwa wa compact inahitajika ambayo inapaswa kutekelezwa bila ya kutumia vipengele vya wakati wa kukimbia au maktaba yaliyohusishwa na lugha ya juu; hii ni labda hali ya kawaida. Kwa mfano, firmware ya simu, mafuta ya magari na mifumo ya kupuuza, mifumo ya kudhibiti hali ya hewa, mifumo ya usalama, na sensorer.
  • Kanuni ambayo inapaswa kuingiliana moja kwa moja na vifaa, kwa mfano katika madereva ya kifaa na wasimamizi wa kupinga .
  • Katika processor iliyoingia au DSP, kuingilia kwa juu kwa kurudia kunahitaji idadi ndogo ya mzunguko kwa kuingilia kati, kama kupinga ambayo hutokea 1000 au mara 10000 kwa pili.
  • Mipango ambayo inahitaji kutumia maelekezo maalum ya programu ambayo hayajafanywa katika compiler. Mfano wa kawaida ni maelekezo ya mzunguko wa bitwise kwenye msingi wa algorithms nyingi za encryption, pamoja na kutaja usawa wa byte au kubeba 4-bit ya kuongeza.
  • Programu zinazounda kazi za vector kwa mipango katika lugha za ngazi ya juu kama vile C. Katika lugha ya kiwango cha juu hii wakati mwingine husaidia kwa kazi za kompyuta za ndani ambazo zina ramani moja kwa moja kwa mnemonics ya SIMD, lakini hata hivyo hufanya mabadiliko ya mkutano mmoja hadi mmoja kwa mtengenezaji wa vector aliyopewa.
  • Programu zinaohitaji uboreshaji uliokithiri, kwa mfano kitanzi cha ndani katika algorithm yenye nguvu ya processor. Watengenezaji wa programu hutumia uwezo wa vifaa vya vifaa katika mifumo, na kuwezesha michezo kukimbia kwa kasi. Simuleringar kubwa ya kisayansi inahitaji algorithms yenye optimized, kwa mfano algebra linear na BLAS [25] [31] au mabadiliko ya cosine mabadiliko (mfano SIMD mkusanyiko version kutoka x264 [32] )
  • Hali ambapo hakuna lugha ya kiwango cha juu ipo, kwenye programu mpya au maalum, kwa mfano.
  • Programu zinazohitaji muda sahihi kama vile
    • mipango ya muda halisi kama vile simuleringar, mifumo ya urambazaji wa ndege, na vifaa vya matibabu. Kwa mfano, katika mfumo wa kuruka-na-waya , telemetry inapaswa kufasiriwa na kufanyiwa kazi ndani ya vikwazo vikali vya wakati. Mifumo hiyo lazima iondoe vyanzo vya ucheleweshaji usioweza kutabirika, ambao unaweza kuundwa kwa lugha (baadhi) zilizotafsiriwa, ukusanyaji wa takataka moja kwa moja, uendeshaji wa pageni, au shughuli nyingi za kutangulia . Hata hivyo, baadhi ya lugha za kiwango cha juu huingiza vipengele vya wakati wa kukimbia na interfaces za mfumo wa uendeshaji ambazo zinaweza kuanzisha ucheleweshaji huo. Kuchagua mkutano au lugha za kiwango cha chini kwa mifumo hiyo huwapa wajumbe zaidi kuonekana na kudhibiti juu ya maelezo ya usindikaji.
    • algorithms ya cryptographic ambayo mara zote lazima kuchukua madhubuti wakati mmoja kutekeleza, kuzuia mashambulizi ya muda .
  • Badilisha na kupanua msimbo wa urithi ulioandikwa kwa kompyuta za IBM kuu. [33]
  • Hali ambapo udhibiti kamili juu ya mazingira unahitajika, katika hali ya juu sana ya usalama ambapo hakuna kitu kinachoweza kuchukuliwa kwa urahisi .
  • Virusi vya kompyuta , bootloaders , madereva fulani ya kifaa , au vitu vingine karibu sana na vifaa au mfumo wa uendeshaji wa chini.
  • Maagizo ya kuweka simulators ya ufuatiliaji, kufuatilia na kufuta upya ambapo uingizaji wa ziada unafanywa kwa kiwango cha chini
  • Reverse-uhandisi na kurekebisha faili za programu kama vile
    • binaries zilizopo ambayo inaweza au haijaandikwa awali katika lugha ya kiwango cha juu, kwa mfano wakati wa kujaribu kurejesha mipango ambayo msimbo wa chanzo haipatikani au umepotea, au ulinzi wa nakala ya nakala ya programu ya wamiliki.
    • Michezo ya video (pia inaitwa ROCK hacking ), ambayo inawezekana kwa njia kadhaa. Njia ya kuajiriwa zaidi inabadilisha msimbo wa mpango katika ngazi ya lugha ya kanisa.
  • Self-kubadilisha kanuni , ambapo lugha ya uundaji imejikita vizuri.
  • Michezo na programu nyingine ya mahesabu ya grafiti . [34]

Lugha ya Mkutano bado inafundishwa katika programu nyingi za sayansi na programu za uhandisi za umeme . Ijapokuwa waandaaji wachache leo hufanya kazi kwa mara kwa mara na lugha ya kanisa kama chombo, dhana za msingi zinaendelea kuwa muhimu sana. Masuala kama hayo ya msingi kama hesabu ya binary , ugawaji wa kumbukumbu , usindikaji wa stack , usanidi wa kuweka tabia , usindikaji wa kupinga , na usanidi wa compiler itakuwa vigumu kujifunza kwa kina bila kuelewa jinsi kompyuta inafanya kazi katika ngazi ya vifaa. Kwa kuwa tabia ya kompyuta imeelezewa kimsingi na kuweka mafundisho yake, njia ya mantiki ya kujifunza dhana hizo ni kujifunza lugha ya kanisa. Kompyuta nyingi za kisasa zina seti sawa za maelekezo. Kwa hiyo, kujifunza lugha moja ya kanisa ni ya kutosha kujifunza: i) dhana za msingi; II) kutambua hali ambapo matumizi ya lugha ya kanisa inaweza kuwa sahihi; na III) kuona jinsi kanuni nzuri inayoweza kutekelezwa inaweza kuundwa kutoka lugha za juu. [35] Hii ni sawa na watoto wanaohitaji kujifunza shughuli za msingi za hesabu (kwa mfano, mgawanyiko mrefu), ingawa calculators hutumiwa sana kwa wote isipokuwa mahesabu yasiyo ya kawaida zaidi.

Programu ya kawaida

  • Lugha ya Mkutano hutumiwa katika msimbo wa boot wa mfumo, msimbo wa kiwango cha chini ambao huanzisha na kuchunguza vifaa vya mfumo kabla ya kupiga mfumo wa uendeshaji na mara nyingi huhifadhiwa katika ROM . ( BIOS kwenye mifumo ya PC inayoambatana na IBM na CP / M ni mfano.)
  • Washiriki wengine hutafsiri lugha za kiwango cha juu katika mkutano kwanza kabla ya kukusanya kikamilifu, kuruhusu kanuni ya mkutano ili kutazamwa kwa madhumuni ya kufuta na ufanisi.
  • Washiriki wengine kwa lugha za kiwango cha chini, kama vile Pascal au C , kuruhusu programu ya kuingilia lugha ya mkutano moja kwa moja kwenye msimbo wa chanzo. Programu zinazotumia vituo hivyo zinaweza kujenga vitengo kwa kutumia lugha tofauti ya mkutano kwenye kila jukwaa la vifaa. Mfumo wa portable msimbo unaweza kisha kutumia vipengele hizi processor maalum kupitia kiolesura sare.
  • Lugha ya Mkutano ni muhimu katika uhandisi wa nyuma . Programu nyingi zinasambazwa tu kwa fomu ya msimbo wa mashine ambayo ni moja kwa moja kutafsiri katika lugha ya kanisa, lakini vigumu kutafsiri kwa lugha ya juu. Vyombo kama vile Interactive Disassembler hutumia matumizi makubwa ya disassembly kwa madhumuni hayo. Mbinu hii hutumiwa na washaghai kufuta programu za kibiashara, na washindani kuzalisha programu na matokeo sawa na makampuni ya ushindani.
  • Lugha ya Mkutano hutumiwa kuongeza kasi ya utekelezaji, hasa katika Kompyuta za kibinafsi za awali ambazo zina uwezo mdogo wa usindikaji na RAM.
  • Wajumbe wanaweza kutumiwa kuzalisha vitalu vya data, bila upungufu wa lugha ya juu, kutoka kwenye msimbo wa chanzo uliowekwa na maoni, kutumiwa na kanuni nyingine.

Angalia pia

  • Compiler
  • Kulinganisha kwa washirika
  • Disassembler
  • Sehemu ya data
  • Hexadecimal
  • Nibble
  • Bunge la Juu
  • Uwekaji wa maagizo
  • Msimbo wa spaghetti
  • Kompyuta ndogo ya mtu - mfano wa kompyuta wa elimu na lugha ya msingi ya mkutano wa 10
  • Lugha ya kanisa

Marejeleo

  1. ^ Assembler language , IBM Knowledge center
  2. ^ Saxon, James; Plette, William (1962). "Programming the IBM 1401". Prentice-Hall. LoC 62-20615. [use of the term assembly program ]
  3. ^ (John Daintith, ed.) A Dictionary of Computing: "meta-assembler"
  4. ^ a b David Salomon (1993). Assemblers and Loaders
  5. ^ Beck, Leland L. (1996). "2". System Software: An Introduction to Systems Programming . Addison Wesley.
  6. ^ Hyde, Randall. "Chapter 12 – Classes and Objects". The Art of Assembly Language, 2nd Edition. No Starch Press. © 2010.
  7. ^ Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference (PDF) . Intel Corporation. 1999 . Retrieved 18 November 2010 .
  8. ^ a b c Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference (PDF) . Intel Corporation. 1999. pp. 442 and 35 . Retrieved 18 November 2010 .
  9. ^ Evans, David (2006). "x86 Assembly Guide" . University of Virginia . Retrieved 18 November 2010 .
  10. ^ "The SPARC Architecture Manual, Version 8" (PDF) . SPARC, International. 1992. Archived from the original (PDF) on 2011-12-10.
  11. ^ Z80 Op Codes for ZINT . Z80.de. Retrieved on 2013-07-21.
  12. ^ Microsoft Corporation. "MASM: Directives & Pseudo-Opcodes" (PDF) . Retrieved March 19, 2011 .
  13. ^ Griswold, Ralph E. The Macro Implementation of SNOBOL4 . San Francisco, CA: W. H. Freeman and Company, 1972 ( ISBN 0-7167-0447-1 ), Chapter 1.
  14. ^ "Macros (C/C++), MSDN Library for Visual Studio 2008" . Microsoft Corp . Retrieved 2010-06-22 .
  15. ^ "Concept 14 Macros" . MVS Software . Retrieved May 25, 2009 .
  16. ^ Answers.com. "assembly language: Definition and Much More from Answers.com" . Retrieved 2008-06-19 .
  17. ^ Provinciano, Brian. "NESHLA: The High Level, Open Source, 6502 Assembler for the Nintendo Entertainment System" .
  18. ^ Booth, A.D.; Britten, K.H.V. (September 1947). "Coding for the ARC" (PDF) . Birkbeck College, London . Retrieved 23 July 2017 .
  19. ^ Campbell-Kelly, Martin (April 1982). "The Development of Computer Programming in Britain (1945 to 1955)". IEEE Annals of the History of Computing . 4 (2): 121–139. doi : 10.1109/MAHC.1982.10016 .
  20. ^ Salomon. Assemblers and Loaders (PDF) . p. 7 . Retrieved 2012-01-17 .
  21. ^ "The IBM 650 Magnetic Drum Calculator" . Retrieved 2012-01-17 .
  22. ^ Eidolon's Inn: SegaBase Saturn
  23. ^ "TIOBE Index" . TIOBE Software.
  24. ^ Rusling, David A. "The Linux Kernel" . Retrieved Mar 11, 2012 .
  25. ^ a b "Writing the Fastest Code, by Hand, for Fun: A Human Computer Keeps Speeding Up Chips" . New York Times, John Markoff. 2005-11-28 . Retrieved 2010-03-04 .
  26. ^ "Bit-field-badness" . hardwarebug.org. 2010-01-30. Archived from the original on 5 February 2010 . Retrieved 2010-03-04 .
  27. ^ "GCC makes a mess" . HardwareBug.org. 2009-05-13. Archived from the original on 16 March 2010 . Retrieved 2010-03-04 .
  28. ^ Randall Hyde. "The Great Debate" . Archived from the original on 16 June 2008 . Retrieved 2008-07-03 .
  29. ^ "Code sourcery fails again" . hardwarebug.org. 2010-01-30. Archived from the original on 2 April 2010 . Retrieved 2010-03-04 .
  30. ^ Click, Cliff. "A Crash Course in Modern Hardware" . Retrieved May 1, 2014 .
  31. ^ "BLAS Benchmark-August2008" . eigen.tuxfamily.org. 2008-08-01 . Retrieved 2010-03-04 .
  32. ^ "x264.git/common/x86/dct-32.asm" . git.videolan.org. 2010-09-29 . Retrieved 2010-09-29 .
  33. ^ "Chapter 1 – Why Study Assembly Language" . www.edwardbosworth.com . Retrieved 2016-06-01 .
  34. ^ "68K Programming in Fargo II" . Archived from the original on 2 July 2008 . Retrieved 2008-07-03 .
  35. ^ Hyde, Randall (1996-09-30). "Foreword ("Why would anyone learn this stuff?"), op. cit. " . Archived from the original on 25 March 2010 . Retrieved 2010-03-05 .

Kusoma zaidi

Viungo vya nje