Memory Organization Bytes are nice, but most data items use larger words For MIPS, a word is 32 bits or 4 bytes 0 32 bits of data 4 32 bits of data Registers hold 32 bits of data 8 32 bits of data 12 32 bits of data 232 bytes with byte addresses from 0 to 232.1 230 words with byte addresses 0, 4, 8, m. 2324 Words are aligned .e what are the least 2 significant bits of a word address? 北京大学计算机科学技术系 计算机系统结枃教硏室
GÜWÑÇj°_+ ÑÇj+´DÔ 0HPRU\2UJDQL]DWLRQ e%\WHVDUHQLFHEXWPRVWGDWDLWHPVXVHODUJHUZRUGV e)RU0,36DZRUGLVELWVRUE\WHV e E\WHVZLWKE\WHDGGUHVVHVIURPWR e ZRUGVZLWKE\WHDGGUHVVHV e:RUGVDUHDOLJQHG LHZKDWDUHWKH OHDVWVLJQLILFDQWELWVRIDZRUGDGGUHVV" ELWVRIGDWD ELWVRIGDWD ELWVRIGDWD ELWVRIGDWD 5HJLVWHUVKROGELWVRIGDWD
Instructions Load and store instructions ° Example: C code A[8]=h+ A[8]: MIPS code: lw sto, 32 ($s 3) add sto, Ss2, $tO sw$t0,32(Ss3) Store word has destination last Remember arithmetic operands are registers, not memory! 北京大学计算机科学技术系 计算机系统结枃教硏室
GÜWÑÇj°_+ ÑÇj+´DÔ ,QVWUXFWLRQV e/RDGDQGVWRUHLQVWUXFWLRQV e([DPSOH &FRGH $>@ K $>@ 0,36FRGH OZ WV DGGW VW VZ WV e6WRUHZRUGKDVGHVWLQDWLRQODVW e5HPHPEHUDULWKPHWLFRSHUDQGVDUHUHJLVWHUVQRWPHPRU\
Our First Example Can we figure out the code? swap(int v[l, int k) Assume: k->$5 i int temp; temp =v[k] v[k]=v[k+1] vo->4 v[ktl] temp; swap mu1i$2,S5,4 add$2,S4,2 1w$15,0($2 1w$16,4($2) sw$16,0($2) sw$15,4($2) r $31 北京大学计算机科学技术系 计算机系统结枃教硏室
GÜWÑÇj°_+ ÑÇj+´DÔ 2XU)LUVW([DPSOH e&DQZHILJXUHRXWWKHFRGH" VZDSLQW Y>@ LQW N ^ LQW WHPS WHPS Y>N@ Y>N@ Y>N@ Y>N@ WHPS ` VZDS PXOL DGG OZ OZ VZ VZ MU $VVXPH N! Y>@!
So far we have learned: °MIPs loading words but addressing bytes arithmetic on registers only ° nstruction leaning add ssl ss2, Ss3 ss1 Ss2+ ss3 sub ssl, ss2 Ss3 ss1 =$s2-ss3 1wSs1,100(Ss2) Ssl Memory [Ss2+100 sw $s1, 100($s2) Memory [$s2+100] $s1 北京大学计算机科学技术系 计算机系统结枃教硏室
GÜWÑÇj°_+ ÑÇj+´DÔ 6RIDUZHKDYHOHDUQHG e0,36 ORDGLQJZRUGVEXWDGGUHVVLQJE\WHV DULWKPHWLFRQUHJLVWHUVRQO\ e,QVWUXFWLRQ 0HDQLQJ DGGV VV V VV VXEV VV V V V OZ VV V 0HPRU\>V@ VZ VV 0HPRU\>V@ V
Machine Language Instructions, like registers and words of data, are also 32 bitslong Example: add sto, $s1, $s2 registers have numbers $to=9, ssl=17, $s 2=18 ° nstruction Format 0000010001100100100000000100000 rt rd shamtfunct Can you guess what the field names stand for 北京大学计算机科学技术系 计算机系统结枃教硏室
GÜWÑÇj°_+ ÑÇj+´DÔ e,QVWUXFWLRQVOLNHUHJLVWHUVDQGZRUGVRIGDWDDUHDOVRELWVORQJ ([DPSOH DGGWVV UHJLVWHUVKDYHQXPEHUVW V V e,QVWUXFWLRQ)RUPDW RS UV UW UG VKDPW IXQFW e&DQ\RXJXHVVZKDWWKHILHOGQDPHVVWDQGIRU" 0DFKLQH/DQJXDJH