Ef þú hefur lesið Hvernig C Programming Works, þá veistu að þetta einfalt stykki af C kóða reiknar aðfeldi 5 (þar sem þáttatilraun af 5 = 5! = 5 * 4 * 3 * 2 * 1 = 120):
a = 1, f = 1, á meðan (að < = 5) {f = f * a; a = a + 1;}
Í lok framkvæmd áætlunarinnar, breytu f inniheldur aðfeldi 5.
Assembly Language
AC þýðanda þýðir þetta C kóða inn tungumáli samkoma. Að því gefnu að RAM byrjar á netfangið 128 í þessum örgjörva og ROM (sem inniheldur samkoma tungumálanám) byrjar á netfangið 0, þá til einfaldra örgjörvi okkar smalamál gæti litið svona út:
//Segjum a er heimilisfang 128 //Segjum F er heimilisfang 1290 CONB 1 //a = 1; 1 SAVEB 1282 CONB 1 //F = 1; 3 SAVEB 1294 LOADA 128 //ef a > 5 stökk 175 CONB 56 COM7 JG 178 LOADA 129 //f = f * a; 9 LOADB 12.810 MUL11 SAVEC 12912 LOADA 128 //a = a + 1; 13 CONB 114 ADD15 SAVEC 12.816 JUMP 4 //lykkja til baka til if17 STOP ROM
Svo nú er spurningin, " Hvernig gera alla þessa leiðbeiningum líta í ROM " Hver af þessum tungumáli samkoma leiðbeiningum skal táknað með tvöfaldur fjöldi. Fyrir the sök af einfaldleika, við skulum gera ráð fyrir á hverjum samkoma Tungumálakennsla er gefið sérstakt númer, svona:
Tölurnar eru þekkt sem opcodes. Í ROM, lítið forrit okkar myndi líta svona út:
//Segjum a er heimilisfang 128 //Segjum F er heimilisfangi 129Addr opcode /value0 3 //CONB 11 12 4 //SAVEB 1283 1284 3 //CONB 15 16 4 //SAVEB 1297 1298 1 //LOADA 1289 12.810 3 //CONB 511 512 10 //COM13 14 //JG 1714 3115 1 //LOADA 12916 12917 2 //LOADB 12.818 12.819 8 //MUL20 5 //SAVEC 12921 12.922 1 //LOADA 12.823 12.824 3 //CONB 125 126 6 //ADD27 5 //SAVEC 12828 12829 11 //hoppa 430 831 18 //STOP
Hægt er að sjá að sjö línur af C kóða varð 18 línur af samsetningu tungumál, og sem varð 32 bæti í ROM.
Umskráningu
The kennsla tengd þarf að snúa hvert opcodes inn í hóp af merki sem fá mismunandi hluti inni örgjörvi. Við skulum