ןורתפ רפסמ ליגרת 9 - ה לש ילבמסאה לש תודוקפה הנבמ - Mips רפסמ הלאש 1

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

‫מבוא למערכות מחשב – סמסטר סתיו תשפ"א‬

‫פתרון תרגיל מספר ‪ – 9‬מבנה הפקודות של האסמבלי של ה‪MIPS-‬‬

‫שאלה מספר ‪1‬‬


‫כיצד תתורגם הפקודות הבאות‪ ,‬הכתובה באסמבלי של ה‪ ,MIPS-‬לשפת מכונה‬
‫(כלומר לאפסים ואחדים)?‬
‫‪. addi $s1, $s3, 3‬א‬

‫התסדיר של הפקודה הוא‪ .I-format :‬השדות‪:‬‬


‫‪op = 8, rs = 19, rt = 17, imm = 3‬‬
‫בשפת מכונה‪0x22710003 :‬‬

‫‪. add $t2, $s3, $s4‬ב‬

‫התסדיר של הפקודה הוא‪ .R-format :‬השדות‪:‬‬


‫‪op = 0, rs = 19, rt = 20,‬‬
‫‪rd = 10, shamt = 0, funct = 32‬‬
‫בשפת מכונה‪0x02745020 :‬‬

‫)‪. lw $t0, 20($t1‬ג‬

‫התסדיר של הפקודה הוא‪ .I-format :‬השדות‪:‬‬


‫‪op = 35h, rs = 9, rt = 8,‬‬
‫‪imm = 20‬‬
‫בשפת מכונה‪100011-01001-01000-00000000-00010100 :‬‬

‫‪. beq $t0, $s2, -12‬ד‬

‫התסדיר של הפקודה הוא‪ .I-format :‬השדות‪:‬‬


‫‪op = 4, rs = 8, rt = 18,‬‬
‫‪imm = -12 ➔ 0xFFF4, 1111 1111 1111 0100‬‬
‫בשפת מכונה‪000100-01000-10010-1111111111110100 :‬‬

‫)‪. sw $t5, -44($s5‬ה‬

‫התסדיר של הפקודה הוא‪ .I-format :‬השדות‪:‬‬


‫‪op = 43h, rs = 21, rt = 13,‬‬
‫‪imm = -44 ➔ 0xFFD4, 1111 1111 1101 0100‬‬
‫בשפת מכונה‪101011-10101-01101-1111111111010100 :‬‬
‫מבוא למערכות מחשב – סמסטר סתיו תשפ"א‬

‫שאלה מספר ‪2‬‬


‫לפניכם קטע קוד כתוב באסמבלי של ה‪ .MIPS-‬האם קטע הקוד הוא לולאה ואם כן‪,‬‬
‫איזו לולאה זו?‬

‫‪Start:‬‬
‫‪sll‬‬ ‫‪$t1,‬‬ ‫‪$s3, 2‬‬
‫‪addu‬‬ ‫‪$t1,‬‬ ‫‪$t1, $s5‬‬
‫‪lw‬‬ ‫‪$t1,‬‬ ‫)‪0($t1‬‬
‫‪add‬‬ ‫‪$s1,‬‬ ‫‪$s1, $t1‬‬
‫‪addu‬‬ ‫‪$s3,‬‬ ‫‪$s3, $s4‬‬
‫‪bne‬‬ ‫‪$s3,‬‬ ‫‪$s2, Start‬‬
‫זוהי לולאת ‪do…while‬‬

‫שאלה מספר ‪3‬‬


‫מה יהיה באוגר ‪ $1‬אחרי ביצוע שתי הפקודות הבאות‪:‬‬

‫‪lui $1, 0x8000‬‬


‫‪addi $1, $1, 0x8000‬‬

‫לאחר ביצוע הפקודה הראשונה (‪ )lui‬הערך המאוחסן באוגר ‪ $1‬הוא‪.0x80000000 :‬‬


‫מכיוון שפקודת ‪ addi‬מבצעת ‪ ,sign extension‬ומאחר והערך ‪ 0x8000‬הוא שלילי –‬
‫הביט השמאלי ביותר הוא ‪ – 1‬הערך שהיא תוסיף לערך המאוחסן באוגר ‪ $1‬יהיה‪:‬‬
‫‪ .0xFFFF8000‬בסוף פעולת החיבור יהיה מאוחסן באוגר ‪ $1‬הערך‪:‬‬
‫‪0x80000000‬‬
‫‪+‬‬
‫‪0xFFFF8000‬‬
‫‪0x7FFF8000‬‬

‫שאלה מספר ‪4‬‬


‫מה יהיה באוגר ‪ $2‬אחרי ביצוע ‪ 2‬הפקודות הבאות‪:‬‬

‫‪lui $2, 0xFFFF‬‬


‫‪addi $2, $2, 0xEEEE‬‬

‫ברגיסטר ‪ $2‬יהיה הערך‬ ‫‪lui‬‬ ‫‪$2, 0xFFFF‬‬ ‫אחרי ביצוע הפקודה‬


‫‪ .0xFFFF0000‬כשנוסיף לו ‪ 0xEEEE‬בעזרת פקודת ה‪ add -‬יבוצע גם ‪Sign‬‬
‫‪ Extension‬ובעצם נוסיף ‪ .0xFFFFEEEE‬לכן‪:‬‬

‫‪0xFFFF0000‬‬
‫‪0xFFFFEEEE‬‬
‫‪0xFFFEEEEE‬‬
‫מבוא למערכות מחשב – סמסטר סתיו תשפ"א‬

‫שאלה מספר ‪5‬‬


‫לפניכם קטע קוד כתוב באסמבלי של ה‪ .MIPS-‬האם קטע הקוד הוא לולאה ואם כן‪,‬‬
‫איזו לולאה זו?‬

‫‪Start:‬‬
‫‪beq‬‬ ‫‪$s3, $s2, Cont‬‬
‫‪sll‬‬ ‫‪$t1, $s3, 2‬‬
‫‪addu‬‬ ‫‪$t1, $t1, $s5‬‬
‫‪lw‬‬ ‫)‪$t1, 0($t1‬‬
‫‪add‬‬ ‫‪$s3, $s3, $s4‬‬
‫‪beq‬‬ ‫‪$0, $s0, Start‬‬
‫‪Cont:‬‬
‫כאן קודם כל בודקים תנאי ליציאה מהלולאה ולכן זוהי לולאת ‪.while‬‬

‫שאלה מספר ‪6‬‬


‫לפניכם קטע קוד כתוב באסמבלי של ה‪ .MIPS-‬כיצד תתרגמו קטע קוד זה ל‪?C-‬‬

‫‪addi $3, $0,‬‬ ‫‪7‬‬


‫‪Start:‬‬
‫‪addi $3, $3, -1‬‬
‫‪add $2, $2, $2‬‬
‫‪bne $0, $3, Start‬‬
‫‪Cont:‬‬

‫)‪for (i=0; i<7; i--‬‬


‫‪a=2*a‬‬
‫נקרא למשתנה המאוחסן באוגר ‪ $3‬בשם ‪ .i‬הוא מקבל את הערך ‪ 7‬ובכל איטרציה‬
‫מפחיתים ממנו ‪ .1‬כמו כן‪ ,‬בכל איטרציה מחברים את אוגר ‪ $2‬לעצמו‪ ,‬כלומר מכפילים‬
‫אותו פי ‪ .2‬נקרא לאוגר ‪ $2‬בשם ‪ .a‬בסוף האיטרציה בודקים האם ‪ $3‬שונה מ‪ .0-‬אם‬
‫הוא שונה מ‪ ,0-‬מבצעים איטרציה נוספת‪.‬‬

You might also like