חזור לתיקייה: שאלוני 10%

שאלון 2

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • כללי

שאלון 2

00440252

מערכות ספרתיות ומבנה המחשב

רשימות הרצאה לקריאה בשבת

שאלון 2

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

תרגיל (1)

נתון הקוד הבא:

addi t0,x0,0x100
addi t1,x0,0x200
beq t0,t1,FIRST
beq t0,t0,SECOND

FIRST: 
	addi t2,x0, 0x1
	j END
SECOND:
	addi t2,x0,0x2
END:

מה יהיה התוכן של רגיסטר t2t_{2}t2​ בסיום ריצת הקוד?

תחילה, אנו לוקחים את הערך 100100100 בהקסה ומוסיפים אותו לערך 000 ושמים זאת ברגיסטר t0t_{0}t0​.
לאחר משכן, אנו לוקחים את הערך 200200200 בהקסה ומוסיפים אותו לערך 000 ושמים זאת ברגיסטר t1t_{1}t1​.
כעת אנו בודקים האם t0==t1t_{0}==t_{1}t0​==t1​. מכיוון שהם שונים, אנחנו לא קופצים ל-FIRSTFIRSTFIRST.
כעת, אנו בודקים האם t0==t0t_{0}==t_{0}t0​==t0​ שזה כמובן נכון. לכן, אנו קופצים ל-SECONDSECONDSECOND.
אנחנו מציבים ברגיסטר t2t_{2}t2​ את הערך 000 מרגיסטר x0x_{0}x0​ בחיבור לערך 222 בהקסה.
לכן:

t2=0x2t_{2}=0x2t2​=0x2

בסוף הריצה.

תרגיל (2)

סטודנט רוצה לקרוא מכתובת 0x20000x20000x2000 בזיכרון לתוך רגיסטר t0t_{0}t0​. אילו מהקודים הבאים יאפשרו זאת?
a. lw t0,0x2000
b.

addi t0,x0,0x2000
lw t0,0(t1)

c. lw t0,0(0x2000)
d.

addi t1,x0,0x2000
lw t0,0(t1)

אנו יודעים כי אנו רוצים לקרוא אל t0t_{0}t0​ ולא לשנות את ערכו. לכן נוחל לפסול את תשובה bbb שכן שם אנו משנים את ערכו של t0t_{0}t0​.
קריאה מזיכרון היא רק דרך פוינטרים ברגיסטרים ולא דרך כתובות ולכן התשובות a,ca,ca,c נפסלות.
נשארנו רק עם תשובה ddd ולכן היא הנכונה!
(למה אפשר לעשות את זה ולא את ccc אין לי שמץ)