adrese
okudum, o zaman C kodu bu basit parça 5 faktoriyelini (hesaplar biliyorum nerede 5 = 5 faktöryel! = 5 * 4 * 3 * 2 * 1 = 120): a = 1
f = 1; da (bir Cs-= 5) {f = * a f; a = a + 1;}
Programın yürütülmesi sonunda değişken f 5.
Assembly Dili
AC derleyici faktoriyelini içeren birleştirici dili içine bu C kodu çevirir. 0 adresinde RAM (Assembly dili programı içerir) Bu işlemci, ve ROM'da adresinde 128 de başlar başlar varsayarsak, o zaman bizim basit mikroişlemci için Assembly dili bu gibi görünebilir:
//Bir adrese 128 olan varsayın //varsayalım F adresi 1290 de CONB 1 //a = 1; 1 SAVEB 1282 CONB 1 //f = 1; 3 SAVEB 1294 LOADA 128 //halinde bir şekilde hidrojen; 175 CONB 56 COM7 JG 178 LOADA 129 //f = f 5 atlama * a; 9 LOADB 12810 MUL11 SAVEC 12912 LOADA 128 //a = a + 1; 13 CONB 114 ADD15 SAVEC 12816 JUMP 4 //döngü geri if17 için DUR ROM
Şimdi yüzden soru, " bu talimatların her şeyi nasıl ROM'da bakmak " Bu assembly dili talimatları birer ikili sayı ile temsil edilmelidir. Basitlik açısından, bu gibi özel bir numara verilir birbirlerinin derleme dil eğitimi varsayalım:
numaralar opcodes olarak bilinir. ROM içinde, bizim küçük bir program şu şekilde görünecektir:
//Bir adrese 128 at //varsayın F adresi 129Addr opcode /value0 olan 3 //CONB 11 12 4 //SAVEB 1283 1284 3 //CONB 15 olduğunu varsayalım 16 4 //SAVEB 1297 1298 1 //LOADA 1289 12810 3 //CONB 511 512 10 //COM13 14 //JG 1714 3115 1 //LOADA 12916 12917 2 //LOADB 12818 12819 8 //MUL20 5 //SAVEC 12921 12922 1 //LOADA 12823 12824 3 //CONB 125 126 6 //ADD27 5 //SAVEC 12.828 12.829 11 //JUMP 430 831 18 //DUR
C kodu yedi satır toplanma 18 satırları haline geldiğini görebilirsiniz dil, ve bu ROM'da 32 byte oldu. Çözme
talimat