[{"text_idx": "#000001", "text": "Ekzakte g\u0302ustatempa (JIT)Pau\u0306saj\u0302o ekzakte g\u0302ustatempa"}, {"text_idx": "#000002", "text": "Mas\u0302inkodo au\u0306 mas\u0302inlingvo estas aro de instrukciaj\u0302o efektivigitaj rekte je la procesoro de komputilo (CPU).\nC\u0302iu instrukcio plenumas tre specifan taskon, kiel ekzemple s\u0302arg\u0302o, salto, au\u0306 ALU operacion sur unuo de datenoj en CPU-registro au\u0306 memoro.\nC\u0302iu programo rekte ruligita per CPU konsistas el serio de tia instrukciaj\u0302o."}, {"text_idx": "#000003", "text": "Nombra mas\u0302inkodo (t.e., ne kunigokodo) povas esti rigardita kiel la plej malaltnivela reprezentado de kompilita au\u0306 kunvenita komputila programo au\u0306 kiel primitivulo kaj hardvaro-dependanto\nDum estas eble skribi programojn rekte en nombra mas\u0302inkodo, g\u0302i estas teda kaj erarema administri individuajn pecojn kaj kalkuli nombrajn adresojn kaj konstantojn mane.\nTial-mas\u0302inkodo kutimas preskau\u0306 neniam skribi programojn en modernaj kuntekstoj, krom eble por kelkaj kodotranc\u0302eroj dum malalta nivelsenararigado."}, {"text_idx": "#000004", "text": "Preskau\u0306 c\u0302iuj praktikaj programoj hodiau\u0306 estas skribitaj en higher-nivelaj lingvoj au\u0306 asembla lingvo.\nLa fontkodo tiam estas tradukita al efektivigebla mas\u0302inkodo per servaj\u0302oj kiel ekzemple kompililoj, asembleroj, kaj ligantoj, kun la grava escepto de interpretitaj programoj, [1] kiuj ne estas tradukitaj en mas\u0302inkodon.\nTamen, la interpretisto mem, kiu povas esti vidita kiel ekzekutisto au\u0306 procesoro, elfarante la instrukciaj\u0302on de la fontkodo, tipe konsistas el rekte efektivigebla mas\u0302inkodo (generita de kunigo au\u0306 altnivela lingva fontkodo)."}, {"text_idx": "#000006", "text": "Mas\u0302inkoda instrukciserio povas havi c\u0302iujn instrukciaj\u0302on de la sama longo, au\u0306 g\u0302i povas havi variablo-longan instrukciaj\u0302on.\nKiel la padronoj estas fakorganizitaj varias forte lau\u0306 la speciala arkitekturo kaj ofte ankau\u0306 kun la speco de instrukcio.\nLa plej multaj instrukciaj\u0302o havas unu au\u0306 pluraj observejkod kampojn kiel ekzemple kiu precizigas la bazan instrukciospecon (kiel ekzemple aritmetiko, logiko, salto, ktp.) kaj la faktan operacion (aldonu au\u0306 kompariblu) kaj aliajn kampojn kiuj povas doni la specon de la operacianto (j), la alparoltitolon (j), la traktan ofseton (j) au\u0306 indekson, au\u0306 la realan valoron mem (tiaj konstantaj operaciantoj enhavis en instrukcio estas nomitaj imediatoj)."}, {"text_idx": "#000007", "text": "Ne c\u0302iuj mas\u0302inoj au\u0306 individua instrukciaj\u0302o havas eksplicitajn operaciantojn.\nAkumulilmas\u0302ino havas kombinitan maldekstran operacianton kaj rezultigas implican akumulilon por la plej multaj artimetika instrukciaj\u0302o.\nAliaj arkitekturoj (kiel ekzemple 8086 kaj la x86-familio) havas akumulilversiojn de ofta instrukciaj\u0302o, kun la akumulilo rigardita kiel unu el la g\u0302eneralaj registroj per pli longa instrukciaj\u0302o.\nStakmas\u0302ino havas la plej grandan parton au\u0306 c\u0302iujn siaj operaciantoj sur implica stako.\nAl Sepciala celo-instrukciaj\u0302o ankau\u0306 ofte mankas eksplicitaj operaciantoj (CPUID en la X86 Arkitekturarkitekturo skribas valorojn en kvar implicajn cellokregistrojn, ekzemple).\nTiu distingo inter eksplicitaj kaj implicaj operaciantoj estas grava en mas\u0302inkodgeneratoroj, precipe en la registrasigno kaj vivaj intervalaj spuradpartoj.\nBona kodoptimumiganto povas spuri implicajn same kiel eksplicitajn operaciantojn kiuj povas permesi pli oftan konstantan disvastigon, konstantan faldadon de registroj (registro asignis la rezulton de konstanta esprimo liberigita supren anstatau\u0306igante g\u0302in per tiu konstanta) kaj aliaj kodpliigoj."}, {"text_idx": "#000008", "text": "Komputila programo estas sekvenco de instrukciaj\u0302o kiuj estas efektivigitaj per CPU.\nDum simplanimaj procesoroj efektivigas instrukciaj\u0302on unu post alia, superskalar procesoroj estas kapablaj je efektivigado de pluraj instrukciaj\u0302o tuj."}, {"text_idx": "#000009", "text": "Programfluo povas esti influita per specialaj \"salto-\" instrukcioj kiuj transdonas ekzekuton al instrukcio krom la nombre sekvan.\nKondic\u0302aj saltoj estas prenitaj (ekzekuto dau\u0306ras hejme alia) au\u0306 ne (ekzekuto dau\u0306ras c\u0302e la venonta instrukcio) depende de iom da kondic\u0302o."}, {"text_idx": "#000010", "text": "Multe pli legebla interpretado de mas\u0302inlingvo, nomita asembla lingvo, utiligas mnemonikajn kodojn por rilati al mas\u0302inkodinstrukciaj\u0302o, prefere ol uzado de la numeraj valoroj de la instrukciaj\u0302o rekte.\nEkzemple, sur la Zilog Z80 procesoro, la mas\u0302inkodo00000101, kiu igas la CPU dekrementi laB procesorregistro, estus reprezentita en asembla lingvo kielDEC B."}, {"text_idx": "#000011", "text": "La MIPS kiun arkitekturo disponigas al specifa ekzemplo por mas\u0302ino kodigas kies instrukciaj\u0302on estas c\u0302iam 32 bitojn longaj.\nLa g\u0302enerala speco de instrukcio ricevas per la observejo (operacio) kampo, la plej alta 6 bitoj.\nJ-speca (salto) kaj I-speca (tuja) instrukciaj\u0302o estas plene precizigitaj per observejo.\nR-speca (registro) instrukciaj\u0302o inkludas kroman kampofunkt por determini la precizan operacion.\nLa kampoj uzitaj en tiuj tipoj estas:"}, {"text_idx": "#000012", "text": "r, rt, kaj rd indikas registroperaciantojn;\nkaj la adreso au\u0306 tujaj kampoj enhavas operacianton rekte."}, {"text_idx": "#000013", "text": "Ekzemple, aldoni la registrojn 1 kaj 2 kaj meti la rezulton en registron 6 estas c\u0302ifritaj:"}, {"text_idx": "#000014", "text": "S\u0302arg\u0302u valoron en registron 8, prenita de la memorc\u0302elo 68 c\u0302eloj post la loko listigis en registro 3:"}, {"text_idx": "#000015", "text": "Saltante al la adreso 1024:"}, {"text_idx": "#000016", "text": "En kelkaj komputilaj arkitekturoj, la mas\u0302inkodo estas efektivigita per ec\u0302 pli fundamenta subesta tavolo nomita mikrokodo, provizante oftan mas\u0302inlingvinterfacon trans linio au\u0306 familion de malsamaj modeloj de komputilo per vaste malsamaj subestaj datumfluoj.\nTio estas farita por faciligi portadon de mas\u0302inlingvoprogramoj inter malsamaj modeloj.\nEkzemplo de tiu uzo estas la IBM Sistemo/360 familio de komputiloj kaj iliaj posteuloj.\nKun datumfluaj padlarg\u0302oj de 8 bitoj g\u0302is 64 bitoj kaj pretere, ili tamen prezentas oftan arkitekturon sur la mas\u0302inlingvonivelo trans la tuta linio."}, {"text_idx": "#000018", "text": "Mas\u0302inkodo estas g\u0302enerale malsama ol Bajtkodo (ankau\u0306 konata kiel p-kodo), kiu estas au\u0306 efektivigita fare de interpretisto au\u0306 sin kompiliten en mas\u0302inkodon por pli rapida (rekta) ekzekuto.\nEscepto estas kiel ekzemple kiam procesoro estas dizajnita por utiligi specialan Bajtkodon rekte kiel g\u0302ian mas\u0302inkodon, estas la kazo kun Java procesoroj."}, {"text_idx": "#000019", "text": "Mas\u0302inkodo kaj kunigokodo foje estas nomitaj indig\u0302ena kodo dum rilatado al platformo-dependaj partoj de lingvotrajtoj au\u0306 bibliotekoj."}, {"text_idx": "#000020", "text": "La Harvard-arkitekturo estas komputila arkitekturo kun fizike aparta stokado kaj signalpadoj por la kodo (instrukciaj\u0302o) kaj datenoj.\nHodiau\u0306, la plej multaj procesoroj efektivigas tiajn apartajn signalpadojn pro spektaklokialoj sed fakte efektivigas Modifitan Harvard-arkitekturon, [ citaj\u0302o bezonis ] tiel ke ili povas apogi taskojn kiel s\u0302arg\u0302ado de ruligebla programo de disko kiel datenoj kaj tiam efektivigado de g\u0302i.\nHarvard-arkitekturo estas kontrastita al la Von Neumann-arkitekturo, kie datenoj kaj kodo estas stokitaj en la sama memoro kiu estas legita fare de la procesoro permesanta al la komputilo efektivigi komandojn."}, {"text_idx": "#000021", "text": "De la perspektivo de procezo, la kodspaco estas la parto de sia adresspaco kie la kodo en ekzekuto estas stokita.\nEn multitasking sistemoj tio konsistas el la kodsegmento de la programo kaj kutime el komunaj bibliotekoj.\nEn multi-surfadeniganta medio, malsamaj fadenoj de unu procezo dividas kodspacon kune kun datenspaco, kiu reduktas la lumfolion de kuntekstenrangigo konsiderinde kiel komparite kun procezenrangigo."}, {"text_idx": "#000022", "text": "G\u0302i estis dirita [ fare de kiu?\ntamen, Usono-Kopirajto-oficejo enkalkulas kopirajtoregistradon de komputilaj programoj [5] kaj la mas\u0302inkodo de programo foje povas esti malkompilita por igi it funkciadon pli facile komprenebla al homoj."}, {"text_idx": "#000023", "text": "Rekonadscienca profesoro Douglas Hofstadter komparis mas\u0302inkodon kun genetika kodo, dirante ke \"Rigardi programon skribitan en mas\u0302inlingvo estas vage komparebla al rigardado DNA molekulatomon de atomo.\""}, {"text_idx": "#000026", "text": "Mas\u0302inkodo estas la maniero, lau\u0306 kiu komputilo interne reprezentas datenojn au\u0306 instrukciojn. En strikta senco la vorto kutime distingas la fonto-kodon de programo au\u0306 ties pseu\u0306do-kodon de tiu interna reprezentaj\u0302o. En preskau\u0306 c\u0302iuj nuntempaj komputiloj la mas\u0302inkodo estas duuma."}, {"text_idx": "#000027", "text": "La cirkvitoj estas duumaj sistemoj, t.e. ili laboras kun nur du tensiaj niveloj. Tiuj niveloj estas nomitaj 0 kaj 1, kaj la mas\u0302inolingvo uzas nur tiujn du signojn. Tiel uzeblas la bulea algebro kaj la duuma sistemo por la dezajno de cirkvitoj kaj en ilia programado."}]