6 bits 5 bits 5 bits 5 bits 5 bits 6 bits

42
Program Counter Integers ALU + - ,< < ,=,!=, > >, and,or,xor,n or Mul. And Div. For integers only Reg. HI Reg. LO Reg. 0 Reg. 1 . . . Reg. 31 CoProcessor1 Float/Double ALU + - * : ,< < ,=,!=, > >, Reg. f0 Reg. f1 . . . Reg. f31 תתתתתתתתתתתתתת- תתBAR-ILAN UNIVERSITY תת- תתת52900 52900 Ramat-Gan, Israel תתתתתת תתתתת תתתתתDepartment of Computer Science תתתתת:5318866-03 : Phone ת תת:7360498-03 : Fax אאאא אאאאאאאאאאא( ) אאאאאאאThe R10000 is nearly an inch square… and when first launched was probably the fastest CPU on the planet.Dominic Sweetman – See MIPS Run (P.1) 1 © תת תתתתתתת תתתתתת תתתתת. תתת תתתת תתתת, תת תתתתתת תתתתתת תתתת תתתתתת תתת תתתת תתתתת.R10K CPU

Upload: dangthuy

Post on 14-Feb-2017

298 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

שטח שמור לפקודותשל מערכת

ההפעלה.

Program Counter

Integers

ALU

+-

,<<,=,!=,>>,and,or,xor,nor

Mul. And Div.For integers only

Reg. HI Reg. LO

Reg. 0Reg. 1

.

.

.Reg. 31

CoProcessor1Float/Double

ALU

+-*:

,<<,=,!=,>>,

Reg. f0Reg. f1

.

.

.Reg. f31

BAR-ILAN בר-אילן אוניברסיטתUNIVERSITY 52900 רמת-גן

52900 Ramat-Gan, Israel

Department of Computer Science המחשב למדעי המחלקה Phone :5318866-03טלפון:

Fax :7360498-03פקס:

לאסמבלר( )מבוא למחשבים מבוא“The R10000 is nearly an inch square… and when first launched was probably the fastest CPU on the planet.” Dominic Sweetman – See MIPS Run (P.1)

. .

Floating-Point Instructions סוג רביעי:

1המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

לפקודות שטח

0x10000000לנתונים שטח

0x400000 PC

R10K CPU

Page 2: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

התקשורת ופקודותCoProcessor 1ה- בתפעול הקשור בכל פקודות, מטפל של זה סוג-$0) המעבד של יםהכללי לאוגרים-CoProcessor 1( f0-$f31,)$ ה של האוגרים בין

$31.)) צפה נקודה מסוג מספר מבנה את נלמד כל הללו, קודם הפקודות את שנלמד לפני

floating point,)זה: מסוג מספרים על חישובים מבצעים וכיצד

. ( floating point ) צפה נקודה של מספרים ייצוג

השלמים מספרים 232דיוק, ב- בלבד; ליתר שלמים במספרים עסקנו כה עדn, השונים

-,231 n 231 - 1 השלמים מספרים 264 ב- בתים, ו בארבעה לייצוג שניתנים n, השונים

-,263 n 263 - 1 המסגרות משתי אחת בתים. בכל בשמונה לייצוג שניתנים מסומנים.( למספרים שייך לעיל יחיד. )האמור ייצוג מספר האלה, לכל

עכשיו נתחיל לכן1/2. המספר את אפילו לייצג איך למדנו לא כה עד אבל וקירובים מדויקת בצורה מסוימים שברים לייצוגMIPS במחשבי צורות שתי ללמוד

אי-רציונאליים. ולמספרים אחרים לשברים

Float –בתים.4 ידי על מיוצג Doubleבתים.8 ידי על - מיוצג

( :I triple E )אוIEEEה- ע"י נקבעו אלו צורותInstitute for Electrical and Electronic Engineers

כתקןANSI :American National Standards Instituteה- דיי לע וגםמחשב. ייד לע אלה מספרים ( לחישוב1985 יולי26 – 754)מס'

. של חזקה "שבר" עם של כמכפלה מספר של ייצוג על מבוסס צפה נקודה של הייצוג לדוגמא, 2

3/4 = 3/4 20 = 3/8 21 = 3/2 2-1 = … . לכן2מ- ופחות1 לפחות השבר שבו הייצוג את לבחור יחיד, קבעו ייצוג להשיג כדי

הנקודה. לפני1 יש לשבר

Floating-Point numbers (single): הבאים לתפקידים בתים(, המחולקות4) סיביות32 דרושות אלה מספרים בשביל

□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□ □

(+/-) ( סימןbits 8) החזקה ( ייצוגbits 23 )(מנטיסה) השבר ייצוג

: הסימן ייצוג

2המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 3: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

הסיבית מובילה. אםה הסיבית ידי על ( נקבע החזקה סימן ולא) כלו המספר סימןאפס. או חיובי שלילי. אחרת, המספר המספר אזי1, המובילה

: החזקה ייצוגזה. מסוג במספרים המשפיע הגורם היא החזקה

(.2-126 )עד: מאוד קטן , או)ε - 2128עד: ) גדול מספר של ייצוג מאפשרתש זאת היא

שליליות? וגם חיוביות גם חזקות לייצג ניתן איך מהחזקה שונה שהיאבבינרית( במחשב )המיוצגתמחשבית" חזקה" הוא פתרוןה

נכפיל( !! )שבה המתמטית

מחשבית חזקה– 127= מתמטית חזקה הוא: הכלל

בטבלה: נסתכל מחשבית חזקה : נכפיל( )שבה מתמטית חזקה : ( Unsigned בבינרית )שרשומה

(00000001) 1 -126 (00000010) 2 -125(00000011) 3 -124 (00000100)4 -123

. . . . . . 124 (01111100) -3 125 (01111101) -2 126 (01111110) -1 (01111111)127 0128 (10000000) 1 (10000001) 129 2

130 (10000010) 3 . . . . . . (11111110) 254 127

ינהא ( 127- המתמטית )=לחזקה0 המחשבית החזקה לב, כי לשים יש: הערהבטבלה. נמצאת נמצאת ( אינה128 המתמטית לחזקה=) 255 המחשבית כן, החזקה כמו

את הטבלה. נסבירמעט. עוד אלה

השבר ייצוג לפחות השבר שבו הייצוג את לבחור יחיד, קבעו ייצוג להשיג הקודם: כדי בעמוד כתבנו

הנקודה. לפני1 יש לשבר . לכן2מ- ופחות1

3המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 4: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

הזה1 המספר את צפה נקודה של באוגר או המחשב בזכרון לייצג צורך זה, אין בגללהנקודה. לפני שמופיע לפני אחת סיבית אומרת, במקום בסוף. זאת לשבר סיבית עוד מוסיפים במקומו

ייצוג לשבר, ומקבלים סיביות23 הנקודה, מקדישים אחרי סיביות22הנקודה, ו- 23) השבר את המייצג החלק את לוקחיםחישוב, מקרים. לקראת בהרבה יותר מדויק

) סמויה סיבית קוראים הזה1 – ל .1 לו ומוסיפים צפה נקודה של מאוגרסיביות( Hidden Bit.)

0. המספר ייצוגבעיה: יש אבל

דוגמאות: 2. )שלמה( של חזקה שהוא מספר מציין אפסים מלא כלל, שבר בדרך1/2. המספר של הייצוג הוא01111110 0 00000000000000000000000

8.- המספר של הייצוג הוא00000000000000000000000 10000010 1

של הסיביות כל מבחינים? כאשר איך0. למספר גם מתאים אפסים שכולו שבר אבל החזקה לכן0. הוא המיוצג המספר0, )המחשבית( כולן החזקה של וגם השבר

משתמשים אלא127,- המתמטית החזקה את מייצגת אינה00000000 המחשבית לייצג1, סיביות יש בשבר וגם, כאשר0, המספר את לייצג כדי בה-x < 2 > 2-126ש: כך x≠0 יםיתת-נורמל מספרים--Sub-normal numbers שנקרא מה

126. -

שמורה היא128. המתמטית החזקה את מייצגת אינה255 המחשבית החזקה כמו-כן.0/0 כגון:)NaN (Not a Number או ,±∞: infinity כגון: סימון אחרים לשימושים

(mantissa אוsignificantגם: : ) נקרא השבר ייצוג סיכום משמאל) אחרת)מספר/מנטיסה( השבר של הבינרי הייצוג את נתרגם זה, אנו במקרה

(:לימיןבאוגר/זיכרון( נשמר ינו א1)ה- ) 1 ). □ □ □ □ □ □ □ … □ 2-23 … 2-7 2-6 2-5 2-4 2-3 2-2 2-1

החישוב. בזמן1 לו סיביות( ומוסיפים23) השבר את המייצג החלק את לוקחים כלומר

1.5625 =1+9/16 =1+1/2+1/16 =+1 2-1+2-4= 10010000000000000000000: לדוגמא 01100000000000000000000 = 2-2+2-3 1+= 1+1/4+1/8 =8 / 1+3= 1.375

עליו הבינרי לייצוג )כלומרfloat לתבנית והסימן( ייכנס החזקה ללא) שהשבר : כדיכלל עליו בהמשך(, נדבר 1)הרגילים( מ- המספרים, הממשיים כל )קרי, קבוצת [ 1 , 2 ) לקבוצה: שייך להיות

( (. כולל לא )2 )כולל(, עד 2-3 …: היותר לכלהחזקה( )ללא החישוב( יהיה בזמן שמתווסף1)+ : השברהוכחה

+2-2 + 2-1 + 1 במחשבים, איננו עוסקים שאנחנו , והיות2ל- שואף הזה אינסופיה הטור כי וידוע

דע אינסוף, אלא על מדברים4

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

שבר

Page 5: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

לעולם הזה, ולכן בטור לחבר ניתן ( אותן2-23 )עד סיביות23 מוקצות לשבר. 2-23 עד.2ל- נגיע לא

בו - השבר באוגר/זיכרון נשמר שאיננו למרות1ה- כאן עושה מה הבין טרם : למיהערהראח עוסקים, יוכפל אנו

כמה מספר לקבל כדי לשבר סיביות שיותר כמה לנצל רוצים , ואנו2 של בחזקה ךכמדויק, שיותר

פתרון: וחשבו" ומצאו חכמים "ישבו אזי אותו נכפיל ךכ ר, ואח1. … נרשום , תמידfloating-point בינרי מספר כשרושמים

השבר סיביות כל את לנצל בשבר, וכך מובילים אפסים שיהיו שלא , כדי2 של בחזקהלדיוק.

הנכון המיקום )לגבי אותו לשמור צורך אין ולכן1 יהיה תמיד השבר שלMSB כלומר, ה ,הדיוק להגדלת הבאות הסיביות23 כל לנו יוותרו שלו, "נתחשבן" בחזקה(,וכך

.1 יוסיף תמיד חישוב, המחשב ולקראת 23ה- מבין הראשונה )כלומר: הסיבית משמאל הראשונה שרואים, הסיבית ולכן, כמו

השבר, של סיביות(.20 )1 ( ולא2-1) חצי השבר( מייצגת שלMSBה-

:דוגמאות בסיס לפי החזקה ללא המספר הבא, ומהו המספר של המתמטית החזקה מהי(1

?2 של חזקות כסכום עשרוני 0 01101010 01101010000000000000000.מחשבית חזקה )עשרוני( וזוהי106 כלומר: 01101010היא: תשובה: החזקה

.21, ונקבל: -המתמטית חזקהה את לקבל ע"מ127 ממנה נפחית לעשרונית( אותו שנתרגם , אחרי2-21ב: יוכפל המספר )כלומר ( .1.4140625 ) = 1+2-2+2-3+2-5+2-7החזקה( הוא: )ללא המספר אזי

?10110101000000001000000 10001101 1הבא: המספר מהו(2(.1 היא הסימן של )הסיבית שלילי המספר כי לב נשים כל תשובה: קודם

חזקה – ).141 (Dec = .( Bin) 10001101)המחשבית(: החזקה את נחשב .מחשבית (214ב- יוכפל המספר . )לכן14=141-127המתמטית: החזקה את נחשב 1+2-1+2-3+2-4+2-6+2-8+2-17החזקה(: )ללא המספר את נחשב

:המספר כל את נחשב -(1+2-1+2-3+2-4+2-6+2-8+2-17( 214=-(214+213+211+210+28+26+2-3(=-27968.125

? IEEE floating point standard לפי לייצוג עשרוני מספר לתרגם כיצד, אזי:float לפי אותו לייצג רוצים ( ואנו49)- מספר שנתון נניח

I) התשובה. ) - ( בסוף הסימן את נזכורII)(.25+24+20=49. )2 של חזקות של לסכום אותו לפרק יש כל קודם

5המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 6: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

III) ביותר הגבוהה החזקה – המספר של החזקה מהי יודעים זה, אנו פירוק אחרי (5→25.)

IV) (25(1+2-1+2-5החזקות. ) ) סכום של לסוגרים מחוץ הזאת החזקה את נוציא V) 1ה- את נזרוק – בינרית בצורה שנייצג המספר , ואת1 הסוגריים בתוך קיבלנו( ( .

2-1+2-5 , )25) VI) (132=5+127)עשרונית(. ) מחשבית לצורה החזקה את נעביר

VII) (10000100בינרית. ) לצורה ומשםVIII) בהתחלה. ) המספר לייצוג הכללים ב- )ה'( לפי שקיבלנו המספר את נפרוש

1000100…)IX) (10001000000000000000000 10000100 1) …וזהו

:דוגמאות ?)float (32 Bit לפי, 78¼ של הייצוג מה(1

26+23+22+21+2-2=¼78 1+2-3+2-4+2-5+2-8)26= תשובה: )

חיובי. , והמספר10000101 , כלומר133=6+127היא: המחשבית החזקה 00111001000000000000000 10000101 0הוא: המספר אזי

?)float (32 Bit , לפי1 של הייצוג ( מה2

00000000000000000000000 01111111 0(: 20•1 )מיידי תשובה

?)float (32 Bit , לפי115.125- של הייצוג ( מה3 11001100100000000000000 10000101 1תשובה:

?)float (32 Bit , לפי601 של הייצוג ( מה4 00101100100000000000000 10001000 0תשובה:

?)float (32 Bit ( לפי0.3333333 )=1/3 של הייצוג ( מה5 בדרך שכזה אינסופי מספר לייצג יכולים אנו אין קטנה, כי בעיה יש תשובה: כאן

הרגילה. ב"טריק": נשתמש לכן 4 1כי: ידוע

3 3 + + + + +…האינסופי: = = הטור לפי לטפל יודעים אנו4/3וב: +1המבוקש הסכום יחושב(, כי שממילא1ל- )פרט לראות , ניתן2 של חזקות לפי אזי יהיה: המספר +, ולכן2-2+2-4+2-6+2-8+2-10…החזקות: סכום הוא מקום יש הלאה, ולנו כך ממשיך שהוא , ובגלל01010101010101010101010 23ל- רק למה.(: נראה מעלה, בהמשך )כלפי סביות, נעגל

01010101010101010101011 .

6המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

=2-24 1 1 1 1 1

1 1 1 3 -¼1 4 5 4 4 4 3 4 2 4

Page 7: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

,2-2ב- זה מספר להכפיל !!! , ועלינו4/3 לנו מייצג הזה המספר כי לשכוח אסור ע"מ

(.01111101 )125 =2+127- ה"מחשבית" תהיה החזקה , ולכן1/3 לקבל .01010101010101010101011 01111101 0הוא: שיתקבל כן, המספר אם

(.1/3ל- )קירוב

מספר ביצוג השבר לחלק פשוט שבר להמרת כללי חישובfloating point

בצורהfloating-point בייצוג השבר לחלק להמירו (, ניתן1מ- )הקטן פשוט שבר בהינתןהבאה:

הנבנה. השבר בחלק0. נרשום(1.2ב- הפשוט השבר את נכפיל(2 1 הנבנה, ונוריד השבר בחלק1 , נרשום1מ- גדל השבר ההכפלה אחרי אם(3

.0 נרשום - אחרת הפשוט מהשבר , float –23) השבר לחלק המוקצות הסיביות מספר ( לפי2, 3) פעולות על נחזור(4

double – 52) אל לנקודה, ונעדכן משמאל בלבד1 שיהיה עד ימינה הבינרית הנקודה את נזיז(5

זה. לפי החזקה

Single precision ב- IEEE 754 ייצוג לפי2/7 את : רשוםדוגמא .(1- או0 רושמים =: אנו כל מחזורי, אחרי : )זהתשובה

2/7.0 2/7 * 2 , 4/7*2 = 8/7 –1 , 1/7 * 2 , 2/7*2 , 4/7*2…

0…0.01001…

0.0100100100100100100100100 להכפיל דרוש ימינה, אזי מקומות ינש הבינרית הנקודה את להזיז מספיק לראות, כי ניתןונקבל: 2-2ב- המספר את =-2+127למחשבית: החזקה את נתרגם1.00100100100100100100100•2-2

(, 0) חיובי הוא , הסימן1250x3e924924 או00100100100100100100100 01111101 0וקיבלנו:

. float מסוג מספרים של אריתמטיקהחשוב: כלל לזכור וחיסור, עלינו חיבור האריתמטיות פעולות לבצע בבואנו

הדבר )כמובן, שבמחשב החישוב בזמן המספרים שני של החזקות את להשוות ישכלל:אוטומטי(. באופן נעשהבסימן. נוגעים לא חזקה, כאשר בסיס לאותו לעבור כדי

? חזקות משוים כיצד לשמור במגמה בהתאם הבינרית הנקודה את ומזיזים2 של מתאימה בחזקה - מכפילים

. המספר של הערך את7

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 8: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

ו-10001010בלבד(: )החזקות מספרים שני של החזקות : נתונותלדוגמא? עושים החזקות. מה את להשוות ורוצים10001110

.142=10001110 138=10001010המחשבית: החזקה את נחשביותר. הגדולה לחזקה להגיע ע"מ4 יותר הקטנה לחזקה להוסיף יש

4 שמאלה הבינרית הנקודה את , ונזיז215 ←211•24מתמטיות(: )בחזקות כלומר את לשמור כדי מקומות

המספר. של הערך

(: float ) מלא בייצוג מספרים עם דוגמא נראה(:1.25+0.75) אותם לחבר הבאים, ורוצים המספרים שני נתונים

0 01111111( 1 ).01000000000000000000000 = 20(1+2-2) אזי , (1+2-1)2-1 = 10000000000000000000000.( 1 )01111110 0

יותר. קטנה כאן החזקה

נוסיף ולכן חישוב מבצעים אנו מחשבית, כרגע לא )בצורה אחרת: בדרך זה את נרשום.(1 – ה את

1.01000000000000000000000•20 + 1.10000000000000000000000•2-1

:הערה הנקודה לפני הסמויה הסיבית את רושמים כן אנו הזאת הייצוג לראות, שבצורת ניתן

קודם במחשב(, נדאג )ייצוג התקנית לצורה בחזרה המספר את וכשנעביר הבינרית,באוגר. השמירה לפני מוביל 1 ורק ואך 1 שיהיהכל,

החישוב. בסוף1 רק להימצא , חייבהבינרית לנקודה כלומר: משמאל

? זאת עושים איךימינה( צעדיםx לזוז כדיx-2ב- הכפלה )ע"י ימינה הבינרית הנקודה הזזת תשובה: ע"י

שמאלה(. צעדיםx לזוז כדי2xב- הכפלה )ע"י שמאלה הזזתה או לנקודה. משמאל מוביל בודד1 שיהיה עד ימינה/שמאלה הנקודה את להזיז יש

יותר:)הכפלת הגדולה יותר, לחזקה הקטנה החזקה עם המספר של החזקה את נשווה(21ב: השני

כלומר:1.01000000000000000000000•20+ 0.11000000000000000000000•20

? עשינו מה הנקודה את הזזנו ולכן21יותר( ב- הקטנה החזקה )בעל השני המספר את הכפלנושמאלה. אחד מקום הבינרית

8המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 9: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

על מסתכלים לא אנו )כאן0 שם רשמנו הסמויה לסיבית משמאל אפסים רק ויש היות "מטופל" בפניfloat מספר של החלקים משלושת חלק והסימן, כל החזקה סיביותעצמו(.

:הסבר שברים עשרוני, עם בבסיס לעשות רגילים שאנו , וכמובינרי בייצוג הוא כאן המספר

הזזת לגבי עשרונייםעשר, של בחזקות בהכפלה/חילוק ימינה/שמאלה הנקודה

כאן נעשה (, 0.0580•100=5.810•10-2 , 73010•100=0.7301•105)דו': )עשרוני( .2 של חזקות עם

(.0.010100•20=1.0100•2-2 , 1111.01•20=1.11101•23)דו': )בינרי(

:נמשיך ביותר הימני 1 מה- החל המספרים את בינריתנחבר, החזקות, ועכשיו את ובכן, השוונו

LSBכ- ישמש )הואהחישוב(. לצורך

-ו 1.01101000000000000000000: היו המספרים אם: לדוגמא)0.10000000000000000000000

בלבד. (0.10000 + 1.01101: מחשבים היינו

: לחשב יש – לחישוב נחזור 1.01+ 0.11 10.00

? זה את קיבלנו איך

)וזכירתה מהנקודה התעלמות כדי בינריים, תוך מספרים שני של חיבור מאוד, זהו פשוטלאח"כ(:

מקומות2 נימצאת )הנקודה 10.00 ←)בינרית( 1000← 8=3+5= 011 + 101 הימנית(. מהספרה

שלנו(: המיוחד )בייצוג הוא החדש המספר כלומר10.000000000000000000000•20

הבינרית, אלא לנקודה משמאל 10 להכיל יכול אינו שלו המלא בייצוג המספר הרי אבל.1 רק

אחד מקום ריתבינה הנקודה את להזיז , ע"מ21ב- המספר את להכפיל לכן, יש.שמאלה

, ונקבל:21ב- ובכן, נכפיל9

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 10: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

תקני. במבנה מספר לנו יש עכשיו, 21•1.00000000000000000000000:המספר )לאחסון( של התקני לייצוג בחזרה נתרגם

(128 = 1+127 היא: המחשבית החזקה ,ולכן1 היא המתמטית )החזקה0 10000000 00000000000000000000000.

.2=(1+2-1)2-1 + (1+2-2)20 קיבלנו שאכן לראות וניתן

:דוגמאות0x40000008 + 0x3e800010( הבאים: float) המספרים שני את ( חבר1

לבינרית: המספרים את תחילה תשובה: נתרגם

מחשבית= )חזקה00000000000000000010000 01111101 0 (2מתמטית=-←125

מחשבית= )חזקה00000000000000000001000 10000000 0 (1מתמטית=←128

המיוחדת: בצורה המספרים את נרשום 1.00000000000000000010000•2-2

1.00000000000000000001000•21

חזקות: נשווה

שמאלה מקומות3 שלו הבינרית הנקודה את ונזיז23הקטנה, ב- החזקה הראשון, עם את )נכפילהמספר.( של הערך על לשמור ע"מ

0.00100000000000000000010•21

1.00000000000000000001000•21

למטה( למעלה, והראשון הפוך- השני הנוחות, נרשום ונחבר: )לשם

1.00000000000000000001000 0.00100000000000000000010(21,כמובן, היא )החזקה 1.00100000000000000010010

הנקודה לפני בלבד1)לאחסון( ) תקנית בצורה רשום שהתקבל והמספר היות

נותר, הבינרית( לאהיא: הייצוגית, והתשובה בצורה בחזרה לרושמו אלא

0x40100012 , או00100000000000000001010 10000000 0

= ?0x40000000-0x3f000010חסר: (2

לבינרית: תחילה תשובה: נתרגם

10המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

+

+

+

+

Page 11: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

מחשבית= )חזקה00000000000000000000000 10000000 0 (1מתמטית=←128

מחשבית= )חזקה00000000000000000010000 01111110 0 (1מתמטית=-←126

המיוחדת: בצורה זה את נרשום 1.00000000000000000000000•21 1.00000000000000000010000•2-1

2 שלו הבינרית הנקודה את נזיז ולכן22ב- התחתון המספר את חזקות: )נכפיל נשווה שמאלה.( מקומות

1.00000000000000000000000•21

0.01000000000000000000100•21

(21 שהיא לזכור יש שלהם, אך החזקה את ארשום : )לאונחסר

1.000000000000000000000000.010000000000000000001000.10111111111111111111100

לנקודה משמאל0 יש כיfloat ,ב- תקנית בצורה מיוצג שאינו מספר ובכן, קיבלנו )יש2-1ב- נכפיל ?איך ימינה. אחד הבינרית, מקום הנקודה את נזיז לכןהעשרונית.

נקבל: אזי .( מימין סיביות נופלות לא עוד נשמר, כל המספר כל של שהערך לזכור

1.01111111111111111111000•20

(127מחשבית=←0מתמטית= התקנית: )חזקה לצורה בחזרה זה, נתרגם ואת.0x3fbffff8 , או01111111111111111111000 01111111 0

Double-precision numbers - כפולה דיוק רמת) סיביות32 באורך צפה נקודה של במספרים מטפל המחשב כיצד שראינו אחרי

float/singleסביות64 של במספרים מטפל הוא כיצד להבין ומיידי (, קל (double.) אחרי הספרות פר)כלומר: מס הדיוק המספר, וברמת של הגודל בסדר רק הוא השינוי

הנקודה(.הבאים: לחלקים בתים(, המחולקות8) סיביות64 דרושות אלה מספרים בשביל

□□□□□□□□□□□ □ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□

(bits 11) החזקה ( ייצוגbits 52) השבר-מנטיסה ייצוג

11המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

-

-

-

סימן)+/)-

Page 12: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

קטן (, אוε – 21024)עד: מאוד גדול מספר לתת יכולהdouble מסוג במספרים החזקה(, 2-1022)עד: מאוד כדי1023 להוריד יש ( וממנה211-2 )2046 עד1מ: היא המחשבית החזקה כאשרהחזקה את לקבל

(.1023 לבין1022– בין )שנעה המתמטית הדבר, רק אותו בדיוק–וכו'( אינסוף ,ייצוג0 עיגול,ייצוג )אריתמטיקה, שיטות השאר כלסיביות: יותר עם

(.0– וגם0+ יש כאן אפסים. )ג"כ החזקה כל וגם שברה כל אם : נקבל0Sub-normal numbersמספרים נקבל אפסים, אזי אינה שברוה אפסים החזקה כל : אם x

x≠0ש- כך-2-1022<x<2-1022כאן [.2-1022, 2-1022-בקטע: ] שנוצר המרווח את למלא בא , זה .2-1022ב- תוכפל שברה(Not a Number-illegal value – )NaNאפסים. אינה שברוה אחדים החזקה כל : אם

.∞/∞ , ∞-∞ , 0/0: לדוגמא (Infinity ∞±– )Inf.בסיבית תלוי ,±∞ )נקבל אפסים שברוה אחדים החזקה כל : אם

הסימן.( . = -∞1/0- , +∞ = 1/0: לדוגמא

: רביעי ג' סוג פרק – תרגילים.double ו- floating-point single של כיצוג12.0625המספר: את הצג(1)0x40f30000 ? (singleהבא: המספר מהו(2)0xc4fff05f 00000000 ? (doubleהבא: המספר מהו(3= ?0x3fc20000+0x3f430000הבאים: המספרים שני את חבר(4 = ?0x40000000-0x3e800003חסר: (5

: ( R-Type ל: )דומה הפקודה מבנה Operation code func+ Reg. Source2 Reg.Source1 Reg.Destination func.

6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

:הסברOp. Code 1- ל היא שהפקודה ידעי המעבד ואז, 010001ל: שווה כלל בדרך

Coprocessor. פקודותיו שלOp. Code וה- .Coprocessor 3 של מושג היה )במקור

010011. היה Op. Code 010011ה- את ומשתמשיםCoprocessor, 3 אין עכשיו

מספר בשבילנלמד.( שלא צפה נקודה של ומעניינות חדשות פקודות

12המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 13: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

func+ מקבל שהוא ממה נוסף פירוט למעבד המספק סיביות חמש של שדה function. מהשדה

single( 32 של בזוגות, גירסא באות צפה נקודה מפקודות הרבה של סיביות( וגרסא double( 64ההבחנה .)השדה תוכן לפי היא סיביות :func+ 10001 – double10000 או – single . השדה תוכן את נזכיר כן הפקודות, אבל זוגות ליד זה את נזכיר לא

func +הפקודות ליד זה. מכלל החורגות

: CoProcessor 1 ל ביצוע פקודותמקורות. שני עם חשבון פעולות של זוגות ארבעה עם נתחיל

add.s fd, fs, ft fd c(fs( + c(ft( Floating Point Add Single function 0 add.d fd, fs, ft fd c(fs( + c(ft( Floating Point Add Doubleadd.s $f5,$f6,$f7 add.d $f5,$f6,$f7

sub.s fd, fs, ft fd c(fs( - c(ft( Floating Point Subtract Single function 1sub.d fd, fs, ft fd c(fs( - c(ft( Floating Point Subtract Doublesub.s $f5,$f6,$f7 sub.d $f5,$f6,$f7 mul.s fd, fs, ft fd c(fs( × c(ft( Floating Point Multiply Single function 2mul.d fd, fs, ft fd c(fs( × c(ft( Floating Point Multiply Doublemul.s $f5,$f6,$f7 mul.d $f5,$f6,$f7

div.s fd, fs, ft fd c(fs( ÷ c(ft( Floating Point Divide Single function 3div.d fd, fs, ft fd c(fs( ÷ c(ft( Floating Point Divide Double div.s $f5,$f6,$f7 div.d $f5,$f6,$f7

אחד. מקור עם חשבון פעולות של זוגות חמישה עם נמשיךsqrt.s fd, fs fd c(fs( Floating Point Square Root Single function 4sqrt.d fd, fs fd c(fs( Floating Point Square Root Doublesqrt.s $f5,$f6 sqrt.d $f5,$f6

abs.s fd, fs fd |c(fs(| Floating Point Absolute Value Single function 5 abs.d fd, fs fd |c(fs(| Floating Point Absolute Value Double abs.s $f5,$f6

13המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 14: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

abs.d $f5,$f6

mov.s fd, fs fd c(fs( Floating Point MOVe (copy( Single function 6mov.d fd, fs fd c(fs( Floating Point MOVe (copy( Double mov.s $f5,$f6 mov.d $f5,$f6

neg.s fd, fs fd -c(fs( Floating Point NEGate Single function 7neg.d fd, fs fd -c(fs( Floating Point NEGate Doubleneg.s $f5,$f6 neg.d $f5,$f6

recip.s fd, fs fd 1/c(fs( Floating Point RECiprocal Single function 21 0x15recip.d fd, fs fd 1/c(fs( Floating Point RECiprocal Double

האוגרים( בין )קישור CPU ל CoProcessor 1 ה- בין קישור פקודות ואצפה, נקודה לאוגר כללי באוגר מספר סיבית סיבית מעתיקות הקישור פקודות מסוים כללי באוגר הסיביות האלה, סידרת מהפקודות אחת של בצוע לאחרלהיפך.

מסוים. צפה נקודה אוגר של הסיביות לסידרת זהה

עם מספר דיי לע המיוצגת תוצאה ולקבל15/7 לחלק רוצים היינו : אם לשימוש דוגמא אוגריםב נמצאים7 15, המספרים כאשר זאת עושים היינו עשרוני, כיצד שבר

ים?ילכלה נקודה של באוגר הנמצאת תשובה להדפיס רוצים שכאשר : ידועלשימוש דוגמא עוד

, משתמשיםצפה (. אם$11-$4) יםילהכל באוגרים רק ארגומנטים מקבלת זו נקציהפו אבלprintf.ב-

שלם(? לא )מספר0.125נדפיס: כן, כיצד

ההעברה צפה. כוון נקודה של האוגר את כך קודם, ואחר הכללי האוגר את רושמיםהפקודה: בשם מאות נלמד

:f = fromכללי. לאוגר צפה נקודה של מאוגר מועתקות הסיביות:t = toצפה. נקודה של לאוגר כללי מאוגר מועתקות הסיביות

mfc1 rt, fs rt c(fs( Single Move From Coprocessor 1 function 0 func+ 0mfc1 $12,$f12

dmfc1 rt, fs rt c(fs( Double Move From Coprocessor 1 function 0 func+ 1dmfc1 $12,$f12

mtc1 fd, rs fd c( rs( Single Move To Coprocessor 1 function 0 func+ 4mtc1 $12,$f12

14המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 15: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

dmtc1 fd, rs fd c(rs( Double Move To Coprocessor 1 function 0 func+ 5dmtc1 $12,$f12

הערך של המשמעות לעיל, הפקודות מארבע בכל לכן .סיבית סיבית העתקה כאן עת נקודה של אוגרב מצאשנ הערך של מהמשמעות לגמרי שונה 12$ כללי אוגרב מצאשנ

f12$ צפה

:לדוגמא $f12 = 0 10000000 00000000000000000000000 = 2 שינוי( ללא נשארf12$ )mfc1 $12,$f12 הפקודה: את נבצע

ונקבל: קשר אין 230 = 00000000000000000000000 10000000 0 = $12

הערכים. בין

Convert )אחד נתונים מטיפוס ערכים מתרגמות אלה הסבר: פקודות )המרה

הנ"ל: מהטיפוסים למשנהוsingle, double, integer, long integerאפשרויות(10זוג. ) של הגיוני צירוף בכל

שני האלה הפקודות . בכלשרי(האפ דיוקה כדי )עד נשמר המספרי הערך – כלומר הם המוזכרים האוגרים

. צפה נקודה של אוגרים

cvt.s.d fd, fs ConVerT Single from Double function 32 0x20 func+ 17 cvt.s.d $f5,$f6 # takes the double value in reg. $f6, converts it to single and puts it into f5.

cvt.s.w fd, fs ConVerT Single from Integer function 32 0x20 func+ 20 cvt.s.w $f5,$f6 #takes the integer value in reg. $f6, converts it to single and puts it into $f5.

cvt.s.l fd, fs ConVerT Single from Long integer function 32 0x20 func+ 21 cvt.s.l $f5,$f6 #takes the long int value in reg. $f6,converts it to single and puts it into $f5.

cvt.d.s fd, fs ConVerT Double from Single function 33 0x21 func+ 16cvt.d.s $f5,$f6 #takes the single value in reg. $f6, converts it to double and puts it into $f5.

cvt.d.w fd, fs ConVerT Double from Integer function 33 0x21 func+ 20 cvt.d.w $f5,$f6 #takes the integer value in reg. $f6,converts it to double and puts it into $f5.

cvt.d.l fd, fs ConVerT Double from Long integer function 33 0x21 func+ 21cvt.d.l $f5,$f6 #takes the long value in reg. $f6,converts it to double and puts it into $f5.

cvt.w.s fd, fs ConVerT Integer from Single function 36 0x24 func+ 16cvt.w.s $f5,$f6 #takes the single value in reg. $f6, converts it to integer and puts it into $f5.

15המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 16: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

cvt.w.d fd, fs ConVerT Integer from Double function 36 0x24 func+ 17cvt.w.d $f5,$f6 #takes the double value in reg. $f6,converts it to integer and puts it into $f5.

cvt.l.s fd, fs ConVerT Long word from Single function 37 0x25 func+ 16 cvt.l.s $f5,$f6 #takes the single value in reg. $f6,converts it to long and puts it into $f5.

cvt.l.d fd, fs ConVerT Long word from Double function 37 0x25 func+ 17cvt.l.d $f5,$f6 #takes the double value in reg. $f6,converts it to long and puts it into $f5.

Rounding in the Process of Conversion to) לשלם צפה מנקודה ההמרה בתהליך עיגולInteger)

Number Binary Representation Round to Nearest Round to Zero Round to ∞ Round to - ∞ 6 110 6 6 6 6 6.0625 110.0001 6 6 7 6 6.4375 110.0111 6 6 7 6 6.5 110.1 6 6 7 6 6.5625 110.1001 7 6 7 6 6.9375 110.1111 7 6 7 6 7 111 7 7 7 7 7.4375 111.0111 7 7 8 7 7.5 111.1 8 7 8 7 7.5625 111.1001 8 7 8 7-6.5 -110.1 -6 -6 -6 -7-7.5 -111.1 -8 -7 -7 -8

Load/StoreP load floating point single to register rd: l.s (pseudoinstru

ction)l.s $f5,ctovet # $f5=the value in “ctovet ctovet+1 ctovet+2 ctovet+3”

ויתחילctovet(- label) התוית ע"י (, המיוצגRAM) בזיכרון למען יפנה : המעבדהסבר(.single word) בתים4 ממנו לקרוא

P load floating point double to register rd: l.d (pseudoinstruction)l.d $f5,ctovet # $f5=the value in “ctovet ctovet+1 . . . ctovet+7”

ויתחילctovet(- label) התוית ע"י (, המיוצגRAM) בזיכרון למען יפנה : המעבדהסבר לקרוא

(.doubleword) בתים8 ממנו

P store floating point single reg. to “ctovet”: s.s (pseudoinstruction)s.s $f5,ctovet # the value in “ctovet ctovet+1 ctovet+2 ctovet+3”=$f5

ויתחילctovet(- label) התוית ע"י (, המיוצגRAM) בזיכרון למען יפנה : המעבדהסבר אליו להכניס

16המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 17: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

.)rs (singleword האוגר של הימניים בתים4- ה את

P store floating point double reg. to “ctovet”: s.d (pseudoinstruction)s.d $f5,ctovet # the value in “ctovet ctovet+1 . . . ctovet+7”=$f5

ויתחילctovet(- label) התוית ע"י (, המיוצגתRAM) בזיכרון למען יפנה : המעבדהסבר אליו להכניס

.)rs (doubleword האוגר של הבתים8 את

Compare 1/0 כ- True/Falseהתשובה- את השוואה, המכניסות פקודות למדנוCPU: ב-הסבר

בהתאמה לעשות, לדוגמא, מה יודעים זה, היינו אוגר עם השוואה , ולפי(rd) המטרה אוגר לתוךלא. ( אוbranch) להסתעף האם

המקבלת, כמובן, בודדה סיבית ( ,כלומרflag) דגל ישנוCoProcessor 1זאת, ב- לעומת (, דבר0) נכשלה ( או1) בהצלחה עברה ההשוואה האם אינדיקציה , הנותנים1 או0

אמורה היתה אוגר, אליו לנו החוסך לאוגר נכנס היה1ה- או0ה- השלמים, שם במספרים )כמו האינדיקציה אותה להכנס

(.rd המטרהמיוחדות: הסתעפות פקודות2 הזה, ישנן הדגל את לבדוק ע"מ

Branch Coprocessor 1 if True (flag=1(: bc1t bc1t address # if the flag indicates 1, branch to the label called: “address”.

Branch Coprocessor 1 if False (flag=0(: bc1f bc1f address # if the flag indicates 0, branch to the label called: “address”.

: לדגל( ערך )שמכניסות ההשוואה לפקודות ונעבור סיביות.6 ל- .Funcה- שדה של המשלים הפקודה, והוא סוג את הקובעFC שדה ישנו

Compare EQual Double: c.eq.d (Func.= 0010)c.eq.d $f5,$f6 # $f5==$f6 ? (flag indicator(

לא, הדגל ואם1 הערך את מקבל שוים, הדגל המושוים האוגרים שני : אםהסברמתאפס.

לאבד לא כדיbclt,bclf: מהפקודות באחת זו לפקודה בסמוך להשתמש מומלץ ההשוואה ערך את בטעות

עד נוספת השואה תהיה לא כי לשמור אחרת, יש–נוספת( השוואה )ע"י בדגל בדגל. שנשתמש

Compare EQual Single: c.eq.s (Func.= 0010)c.eq.s $f5,$f6 # $f5==$f6 ? (flag indicator(

Compare Less than or Equal Double: c.le.d (Func.= 0010)17

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 18: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

c.le.d $f5,$f6 # $f5<$f6 ? (flag indicator( Compare Less than or Equal Single: c.le.s (Func.= 0010)

c.le.s $f5,$f6 # $f5<$f6 ? (flag indicator( Compare Less Than Double: c.lt.d (Func.=

1100)c.lt.d $f5,$f6 # $f5<$f6 ? (flag indicator(

Compare Less Than Single: c.lt.s (Func.= 1100)c.lt.s $f5,$f6 # $f5<$f6 ? (flag indicator(

צפה נקודה של מספרים של העיגול שיטות ארבע

דיוק רמת עם מתעסקים צפה, אנו נקודה של מספרים שני מחסרים או מחברים כאשרהמחשב. של הנתונה

התוצאה האמיתי, מאשר למספר קרובה יותר תשובה לקבל רוצים אבל, לפעמיםלו. שיוצאת

העשרונית. הנקודה אחרי ספרות4 עד רק להחזיר שיודע מחשב שיש : נניחלדוגמא ?0.046875 = 3/64החילוק: תוצאת להיות כדי מדויק יותר מה הפרש , כלומר0.0468נקבל: האחרונות הספרות שתי את יחתוך פשוט המחשב אם 0.000075 של

האמיתית. מהתשובה ( נקבל:0.00005מ- גדול יותר0.000075 )כי מעלה כלפי יעגל המחשב ואם

, כלומר0.0469 משמעותי מאוד , וזה0.00005ב- הדיוק את שיפרנו כלומר0.000025של: הפרש

הדורשים בחישוביםגבוהה. דיוק רמת

? מספר מעגל המחשב כיצד אחד "להזיז" את צריכים מספרים, אנו שני לחבר רוצים כשאנו שלפעמים ראינו

ימינה, המספרים שראינו, הסביות המקרים שבימינו. בכל "נופלות" הסיביות וכך החזקה את להשוות כדיאפסים, אזי היו ,1 היה שערכה/ערכן שנפלה/נפלו סיבית/סיביות היתה אם משמעותיות. אבל אינן הן

סיביות הן אלה יותר. אז גבוה לדיוק להגיע כדי המתקבל המספר את לעגל כדי בהן להשתמש שאפשר

? עושים מה18

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 19: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

מעין נעשה אנו צפה נקודה של מספרים שני בין אריתמטית פעולה עושים כאשר של הימני מצידו מירפסת בלבד, ובהם סיביות2 להחזיק זו למירפסת מספיק להזיז, כאשר שצריך המספרבכלל. התוצאה, אם את לעגל ע"מ נשתמש

החיסור: את ניקח: לדוגמא 40000000 3f000003

,כמובן.( נקבל:single- צפה נקודה של בפורמט ) המספרים בבינרית אותם נרשום אם(21מתמטית: )חזקה00000000000000000000000 10000000 0(2-1מתמטית: )חזקה 00000000000000000000011 01111110 0

שלו, נקבל: מחשבית הלא בצורה המספר את נרשום אזי, אם 1.00000000000000000000000∙21

1.00000000000000000000011∙2-1

(.22ב- )נכפיל אותה יותר, ונגדיל הקטנה החזקה את ניקח חזקות להשוות כדיהמטופל. המספר של מקומות2ב- ימינה( shift) לנו", כמובן, בהזזה "תעלה זו הגדלה

האחרונים. האחדים שני ההזזה, ייפלו שע"י כך מעוצב שבחרתי המספר לראות, כי ניתן

ליפול: שאמורים הביטים כולל ההזזה על ונסתכל בואו

1.00000000000000000000000 ∙21

0.00100000000000000000000 11 ∙21

מהמירפסת( חוץ ". )הכלהמספר:" נקרא אנו ". ולזהמירפסתנקרא: " אנו לזה

, נקבל: מהמירפסת התעלמות כדי תוך מכאן נמשיך אם0.11100000000000000000000∙21

=0+127מחשבית: )חזקה20∙1.11000000000000000000000בעצם: שזה127)

.0x3fe00000 = 11000000000000000000000 01111111 0מחשבית: ובצורהמדוייקת. פחות נחמדה, אבל התוצאה

סביות.26 עם מתעסק הוא המירפסת, כלומר את גם מחשבMIPSה- זאת: עושה הוא כיצד נראה

1.00000000000000000000000 00 ∙21

0.00100000000000000000000 11 ∙21

19המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

-

-

-

-

-

Page 20: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

ביותר( ונקבל: )הימנית26ה- מהסיבית הפעם המעבד, רק כמו החישוב את נתחיל

0.11011111111111111111111 01 ∙21

(:…1.10) חוקי מספר של במבנה יהיה שהוא המירפסת( כדי )כולל המספר את נסדר1.10111111111111111111110 10 ∙20

ביותר הימני0המירפסת, וה- סיפקה במספר ביותר הימני0ה- שאת לראות ניתןהמחשב. ע"י סופק במרפסת

. 10 יש כרגע שבמרפסת–? יודע הוא ומה

העיגול שיטת לפי ( ופועל0ה- )דהיינו המספר של LSBה- אל מכוון הוא ועכשיושבמערכת.

והן: עיגול שיטות4 ישנן

Round To Nearest – ההפעלה( מערכת של המחדל )ברירת ביותר לקרוב עיגול ביותר: הקרוב למספר שבמרפסת המספר את יעגל החישוב, המחשב כלומר: אחרי

שינוי( ללא יישאר )כלומר: המספר0ל- יעוגל– 00 )כנ"ל(0ל- יעוגל– 01 כלפי נעגל ( אזי1) דלוקה מהן אחת לפחות שנפלו. אם הסיביות על נסתכל– 10

מעלה. כלפי נעגל1 היא למרפסת: אם משמאל הראשונה הסיבית על לא, נסתכל אם

מטה.– 0מעלה, (LSB ל- 1 למספר יוסיף )כלומר: המחשב1ל- יעוגל– 11

)חזקה20∙1.01111111111111111111110נקבל: לעיל זו, בדוגמא שיטה לפי(127 – מחשביתעיגול(. שינוי-ללא ללא נשאר )המספר0x3fbffffeיהיה: והמספר

Round Toward Zero – לאפס עיגול את שהוא( וישאיר ערך )כל שבמירפסת מהערך יתעלם החישוב, המחשב כלומר: אחרי

שהיא. כמו התוצאה

.0x3fbffffeיהיה: המספר זו שיטה לפי ג"כ

Round Toward Positive Infinity – ביותר הקרוב הגדול החיובי למספר עיגול לכוון תגדל שהתוצאה כך שבמירפסת הערך את יעגל החישוב, המחשב כלומר: אחרי

(.∞ )לכוון החיובי

20המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 21: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

חיובי: מספר נתון אם.1ל- דלוקה, יעוגל היתה שנפלו מהסיביות אחת לפחות אם– 00חיובית( יותר גדול יהיה שהוא כדי בסופו1 יתוסף )כלומר: למספר1ל- יעוגל– 01 )כנ"ל(1ל- יעוגל– 10 )כנ"ל(1ל- יעוגל– 11

יקטן(. לא שהוא כדי ערך שום לו יתוסף שלילי: )לא מספר נתון אם.0ל- יעוגל– 00.0ל- יעוגל– 01.0ל- יעוגל– 10.0ל- יעוגל– 11

לנו: יש . לכן10 היה התוצאה ובמרפסת חיובי )התוצאה( היה המספר לעיל ובדוגמא שהמספר כדי בסופו1 יוסיף והמחשב20∙1.01111111111111111111111110

יגדל, ונקבל:.0x3fcfffffתהיה: התוצאה כלומר20∙1.01111111111111111111111111

Round Toward Negative Infinity – ביותר הקרוב הגדול השלילי למספר עיגול לכוון תגדל שהתוצאה כך שבמירפסת הערך את יעגל החישוב, המחשב כלומר: אחרי

-(.∞ )לכוון השלילי

יגדל( לא שהוא כדי ערך שום לו יתוסף חיובי: )לא מספר נתון אםעיגול( . )אין0ל- יעוגל– 00 0ל- יעוגל– 01 0ל- יעוגל– 10 0ל- יעוגל– 11שלילי: מספר נתון אם.1ל- דלוקה, יעוגל היתה שנפלו מהסיביות אחת לפחות אם– 00שלילית( יותר גדול יהיה שהוא כדי בסופו1 יתוסף . )כלומר: למספר1ל- יעוגל– 01.1ל- יעוגל– 10.1ל- יעוגל– 11

שינוי, ונקבל: ללא יישאר הוא חיובי, לכן )התוצאה( הוא שלנו, המספר ובדוגמא0x3fcffffe.

בעזרתן: לחישוב דוגמאות נראה השיטות4 את שראינו אחרי

:דוגמאהבאה: הפעולה את נקח

21המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 22: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

0x400000003-0x3f000003? =

: תשובהבבינרית: המספרים את נרשום

0100000000000000000000000000001100111111000000000000000000000011

ו- לחזקה8לסימן, אחת הנתונים: סיבית לסיביות המחולק המחולקת: )מספר ובצורה למספר(23

-128מתמטית: )חזקה00000000000000000000011 10000000 0127=1)

-126מתמטית: )חזקה 00000000000000000000011 01111110 0127- =1)

המיוחדת: ובצורה1.000000000000000000011∙21

1.000000000000000000011∙ 2 -1

ימינה( (2 אותו )=נזיז22ב- התחתון המספר את החזקות: )נכפיל את נשווההמירפסת:( עם )נרשום

1.00000000000000000000011 00 ∙21 0.01000000000000000000000 11 ∙21

ההפחתה( לאחר המרפסת תוכן את יזכור המחשב – המרפסת נפחית: )כולל0.11000000000000000000010 01 ∙21

הבינרית( לנקודה משמאל1 המספר: )שיהיה את נסדר1.10000000000000000000100 10 ∙20

(1ב- קטנה החזקה שמאלה, לכן אחד מקום המספר את )הזזנו

לכן:10במרפסת: והסידור, נשאר ההפחתה אחרי

( Round To Nearest ) הראשונה העיגול שיטת לפי(0ל- אצלינו מעוגל10 כי בסוף כלום נוסף בחזרה: )לא נתרגם

0 01111111 10000000000000000000100 = 0x3fc000004

22המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

-

-

-

-

Page 23: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

( Round Toward Zero ) השניה העיגול שיטת לפי(0ל- מעוגל10 כי בסוף כלום נוסף בחזרה: )לא נתרגם

0 01111111 10000000000000000000100 = 0x3fc000004

( Round Toward Positive Infinity ) השלישית העיגול שיטת לפיחיובי( שהמספר בגלל1ל- מעוגל10 כי המספר בסוף1 בחזרה: )נוסיף נתרגם

0 01111111 10000000000000000000101 = 0x3fc000005

( Round Toward Negative Infinity ) הרביעית העיגול שיטת לפיחיובי( שהמספר בגלל0ל- מעוגל10 כי המספר בסוף כלום נוסף בחזרה: )לא נתרגם

0 01111111 10000000000000000000100 = 0x3fc000004

: דוגמא ועודהעיגול: שיטות4 לפי חשב

40000001-3e800003? =

:תשובה)ונחלק(: לבינרית נתרגם

0 10000000 000000000000000000000010 01111101 00000000000000000000011

המיוחדת: לצורה נתרגם1.00000000000000000000001∙21

1.00000000000000000000011∙2-2

חזקות: נשווה1.00000000000000000000001 00 ∙21

0.00100000000000000000000 01 ∙21

נצטרך אם יחזרו לא אלה למרפסת, סיביות מימין סיביות שנפלו לראות : ניתןהערה את להזיז

המרפסת. לתוך מימין אפסים ימלא תמיד המחשב שמאלה, אלא בחזרה המספר נפחית:

∙21 0.11100000000000000000000 11

במרפסת.11 קיבלנו

חוקית: בצורה זה את נרשום

23המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

-

-

-

Page 24: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

1.11000000000000000000001 10 ∙20

במרפסת, ונעגל:10 קיבלנו ( Round To Nearest ) הראשונה העיגול שיטת לפינקבל: (, לכן0 ← 10) המספר של כלום להוסיף צריך לא0 01111111 11000000000000000000001 = 0x3fe00001

( Round Toward Zero ) השניה העיגול שיטת לפינקבל: למספר, לכן כלום להוסיף צריך לא0 01111111 11000000000000000000001 = 0x3fe00001

( Round Toward Positive Infinity ) השלישית העיגול שיטת לפינקבל: המספר, לכן של לסופו1 להוסיף צריך

0 01111111 11000000000000000000010 = 0x3fe00002

( Round Toward Negative Infinity ) השלישית העיגול שיטת לפינקבל: למספר, לכן כלום להוסיף צריך לא0 01111111 11000000000000000000001 = 0x3fe00001

המרפסת חישוב הבאה, בתחילת לפקודה מפקודה עובר אינו המרפסת : תוכןהערה .00 תמיד

scanf ו- printf פונקציות: כיצד ראינו לא לזיכרון, אבל אוגר ובין לאוגר אוגר בין חישובים לבצע כיצד ראינו כה עד

נתונים לקבלהמסך. על נתונים להדפיס )מהמקלדת( או מהמשתמש

המהדר. ע"י המוכרות חיצוניות בפונקציות להשתמש עלינו אלה מטלות לבצע ע"מ

C של גירסא כל עלינו, ליד להקל ע"מ ופלט, לכן קלט כללה לאC שפת של ההגדרהפונקציות סיפריות יושבות.scanf ו- printf ופלט, הכוללות לקלט

בהן.( נשתמש , ולכן++C ב- cout ו- cin מאשר לשימוש קלות יותר הרבה שהן )מצאנו (, כלומרarguments) ארגומנטים על לדבר פונקציות, עלינו על מדברים ואנו היות

משתנים/נתוניםפועלת. היא ולפיהם מקבלת שהפונקציה

24המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 25: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

-Formatה- את ראשון ארגומנט בתור לקבל צריכותscanf ו- printf הפונקציות שתיString יופיעו/יתקבלו, ומאיזה הנתונים כיצד יודעות הן שלפיה תוים מחרוזת מקבלות הן כלומרנתון. כל טיפוס

(.label) תוית לו ( ולתתdata.הנתונים. ) של בחלק לרשום ישFormat Stringה- את

)כולל(, כאשר$11-$4הם: לפונקציה הארגומנטים העברת לשם שהוקצו האוגרים חובה $4 באוגר

הארגומנטים. שאר את עוקב בסדר , ואחריוFormat-Stringה- את להכניס

: ( output )פלט- printf ב- השימוש :Format Stringה- מבנה

.asciiz ”%f %s %d” label: asciiz.הוא, שב- ההבדלascii. והוא: asciiz.מ- מחרוזת, חוץ להכנסת טיפוס עוד )ישנו

יתווסףיתווסף.( לאascii., וב- )’NULL (‘\n התו המחרוזת לסוף

או ארגומנטים שני רק לרשום המרכאות, או בין כלום לרשום : ניתן, כמובן, לאהערהאחד,

ארגומנטים להוסיף או פעמים כמה האות אותה את לרשום האותיות, או בין להחליף אווכו'...

שונים: נתונים טיפוסי משלושה ארגומנטים3 מקבלת הנ"ל : הפונקציההסבר%f –מסוג נתונים טיפוס floatהנקודה אחרי ספרות6 עד של דיוק עשרוני( עם )מספר

העשרונית.העשרונית( הנקודה אחרי ספרות12 עד של לדיוק)lf (long float% )או

%s –מסוג נתונים טיפוס stringתוים( )מחרוזת%d –מסוג נתונים טיפוס decimalמספר( :שלםinteger)

(character )תו- char מסוג נתונים טיפוס– c%והוא: בו שנשתמש טיפוס עוד ישנו

כמה (, כלומר++C ב- width )כמו שדות להגדיר ג"כ ( ניתןf, %d%) מספריים בטיפוסיםמספר, כל יוצג תוים

:לדוגמא%12.11lf –11 ישנם כאשר תוים/מקומות12 לפחות של בשדה יוצג שהמספר אומר אחרי מקומות

משמאלה. למספר אחד מקום העשרונית, ולפחות הנקודה .14.2390587XXXXכמו- המסך על מקום יתפוס14.2390587: לדוגמא

העשרונית. לנקודה מימין מקומות11 יוקצו כלומר %4d –12345: לדוגמא תוים/מקומות. 4 לפחות של בשדה יוצג שהמספר אומר

.12345יירשם: 25

המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 26: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

)כלומר:4 לאוגרFormat Stringה- את להכניס צריכים ואנו : היות ההסבר המשךלהכניס

)la (Load Addressבפקודה: .( נשתמשstringה- מתחיל בזיכרון, שממנו המען אתla $4,label

.Format Stringה- של התוית היאlabel כאשראצטרך אני , לכןFormat Stringה- בתוך ארגומנטים בתור נתונים טיפוסי3 רשמתי אני

הבא: מהאוגר החל הפונקציה אל האלה הארגומנטים את ג"כ להעביר moveהפקודה: ע"י .לדוגמאfloating point double מטיפוס ארגומנט יקבל– $5$5##$, laהפקודה: ע"י”…..”label2: .asciizמהצורה: מחרוזת של מען יקבל– $6

$6,label2 )##-,move $7##$ הפקודה ע"י ,לדוגמאinteger מטיפוס ארגומנט יקבל– $7

מס' אוגר(.

laהפקודה: באמצעות$25 לאוגר מענה את נכניס הפונקציה את לבצע ע"מla $25,printf

.printf הפונקציה/התוית של המען את יודע : המהדרהערה. jalr $31,$25ע"י: הפקודה את ונבצע

לפני בתוכנית שבשימוש הזמניים האוגרים כל את לשמור יש !! זהירות הפונקציה, ותקבלו בביצוע יישתנה ערכם לפונקציה, אחרת הקריאה

שלך. )מומלץ לתוכנית ותחזור תסתים כשהפונקציה נכונים לא ערכיםבמחסנית( לשמור

? צפה נקודה של מספר שלמים מספרים של לאוגר להכניס ניתן : כיצדבעיה

מספרים של אוגר לתוך צפה נקודה של מספר של פורמטב מספר מכניסים : אנותשובהשלמים.

שלמים מספרים של הרגילה בצורה האוגר של התוכן את להדפיס נרצה שאם נכון כלומר

עשרוני. שבר לא חיובי( אבל או )שלילי מאוד גדול שלם מספר , נקבלd%כ- של בפורמט מספר ישנו האמור האוגר שבתוך יודעתFormat Stringה- הפונקציה, לפי

המבוקש. העשרוני למספר זה את יתרגם הוא צפה, לכן נקודה:דוגמא

.dataf_s: .asciiz”%s %2d / %2d is %12.11lf \n”text1: .asciiz”The decimal value of:”..

.text..la $4,f_s Format String -ל #$4 ה של המען את מכניס -la $5,text1 מטיפוס הראשון הארגומנט את מכניס )s%) לאוגר #$5

26המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 27: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

li $6,1 אוגר לתוך1 הערך את טוען #$6 li $7,32 אוגר לתוך32 הערך את טוען #$7 li.d $f1,1.0 #f1 1 הערך את טוען( 1.0) זמני אוגר לתוךli.d $f2,32.0 #f2 זמני אוגר לתוך32 הערך את טועןdiv.d $f3,$f1,$f2 # $f3=$f1/$f2=1/32=0.03125dmfc1 $8,$f3 #$8 , לאוגר שלו פורמטב העשרוני השבר את מכניס la $25,printf הפונקציה של המען את טוען printf לתוך#$25jalr $31,$25 הבאה( בסיומה )לשורה לתוכנית וחוזר # .printf מבצע..

יהיה: התוכנית שלoutputה- The decimal value of: 1 / 32 is 0.03125000000 _

אוX%- מהארגומנטים )חוץFormat Stringה- בתוך שירשם תו כל כי לראות ניתן(.output) בפלט ( יירשם… n , \t\- העיצוב תוי(.n\) שורה של וירידהis המילה )/( ,את החלוקה סימן מרוחים, את הוספתי אנישרוצים. מה להוסיף ניתן

: ( input )קלט- scanf ב- השימוש לקלוט יש נתונים של טיפוסים אלו לדעת ע"מFormat Stringב- להשתמש יש כאן ג"כ

מהמשתמש. חוץFormat Stringה- של המרכאות בתוך שיירשם דבר כל כאןprintfמ- בשונה

. המסך על ייראה לא( X%) מהארגומנטים:דוגמא

.dataf_s: .asciiz”%d hello %f”.

.text.la $4,f_saddiu $5,$fp,16 # ,בהנחה שהמקום הזה במחסנית פנוי, אם לא .נקח מקום אחרaddiu $6,$fp,24 # כנ"ל, ואם אין, ניתן להגדיל את המחסניתעוד. (כלפי מטה)la $25,scanfjalr $31,$25..

.hello המילה את נראה לא בפלט

27המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 28: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

נתונים: סוגי2 להכניס מהמשתמש מבקשים אנו שלעיל בדוגמא. enter ( ולהקישf%) עשרוני מספר להכניס ואח"כenter להקיש–( d%) שלם מספר

ולהקישfloat מספר (, להכניסspace-bar) הרווח מקש על , להקישinteger להכניס )אוenter).

הם: תקבל שהפונקציה הארגומנטים שני עוד לקבל שיש לפונקציה שתאמרFormat Stringה- של המען את - יקבל$4

ארגומנטים, $6 ו- $5 )המענים( בתוך הערכים בעצם יהיו , והםf%ל- והשניd%ל- האחד

בהתאמה. ראש של )המעןfpמ- בתים16 של מרחק הנמצא המען על - מצביע$5

(.0 המחסנית-מיקום.fpמ- בתים24 של מרחק הנמצא המען על - מצביע$6

-$7 לפונקציה-אוגרים אוגרים עוד להעביר ארגומנטים, ניתן עוד רוצים היינו אם פנויים מקומות בעוד משתמשים בהתאם(, והיינוformat stringה- שינוי ע"י )כמובן$11

ממנה, החוזר הערך את לשמור במחסנית, כדי לשמור כדי במחסנית שימוש לעשות ומומלץ ארגומנט לכל בתים8 להקצות יש כאשראותם. בתים.(8 אוגר, שגודלו לתוך המען את מכניסים אנו ? כי8 )למה

ו-$5 שלך, אוגרים בתוכנית הבאה לשורה עוברPCוה- מסתיימת שהפונקציה אחרי$6

במחסנית. נמצאים החוזרים הערכים לפונקציה( פנויים, כי ששלחת הארגומנטים )ושארשלך. במחסנית נתון אף משנה והפונקציה,כמובן, אינה

הנ"ל, נבצע: הללו, נגיד, מהתוכנית בערכים להשתמש רוצים אםld $12,16($fp) #int. כולל( במחסנית, הוא23ה- עד16ה- לבית שנכנס הערך( מטיפוסl.d $f20,24($fp)#float כולל( במחסנית, הוא31ה- עד24ה- לבית שנכנס הערך( מטיפוס

הכניס. שהמשתמש בערכים להשתמש נוכל ועכשיוהערך את תתרגםscanf הפונקציהfloating-point numbers לגבי לחשוש מה : איןהערה

שייכנס מה ( וזהIEEE 754 )לפי הזהformatב- מהמשתמש, למספר שנתקבללמחסנית.

:לדוגמא .data

f_s_printf: .ascii”%s\n”text: .asciiz”Please enter an integer and a floating-point number:”f_s_scanf: .asciiz” %d %lf”

.

..text

28המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 29: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

.

.la $4,f_s_printfla $5,textla $25,printfjalr $31,$25la $4,f_s_scanfaddi $5,$sp,16 16אחר פנוי מקום לא, נקח אם # ($sp) בהנחה

פנוי הזה שהמקוםaddi $6,$sp,24 כנ"ל# la $25,scanfjar $31,$25

.

.:ובקצרה

)כולל(, ומספר23ה- עד16ה- מהבית במחסנית שלם מספר לנו היה התהליך בסיוםבפורמט

)כולל( במחסנית.31ה- עד24ה- מהבית עשרוני מספר של למספר)ld $13,16($spבפקודות: משתמשים אנו הזו באינפורמציה להשתמש ע"משלםעשרוני. למספר)l.d $f2,24($sp ו/או

האוגר, שמאלה.

הרגילים: האוגרים תפקידיUseSoftware NameRegister Name

Reserved for the assembler *------not in use-----$1 (or: $at(Function return values------not in use-----$2,$3

Pass arguments to functions------not in use-----$4-$11Temporary registers ***------not in use-----$12-$15

Saved registers **------not in use-----$16-$23Temporary registers***------not in use-----$24,$25Reserved for kernel *------not in use-----$26,$27

Contains the global pointer$gp$28 (or: $gp(

29המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

: מומלצת בבליוגרפיהThe C Programming Language – Kernighan & Ritchie Chapter 7

Page 30: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

Contains the stack pointer $sp$29 (or: $sp(Contains the frame pointer$fp $30 (or: $fp(Contains the return address$ra$31

לשינוי( ניתן !!)בלתי תמיד0=$0לזכור: יש* Do not touch !!!** Must be saved (pushed( in the stack before changing them, and restored when the program\function ends.*** Do not count on them !!! ,Don’t put any valuable information in them if you are going to call a function from out side your program (like: printf ,scanf etc..(

: בשברים המטפלים האוגרים תפקידיUseSoftware NameRegister Name

Function return float\double value ($f0(,

ייכנס המדומה , החלקמרוכב המספר אם $f2ל-

fv0,fv1$f0,$f2

Temporary registers ft1,ft3$f1,$f3Temporary registers ft0-ft7$f4-$f11

Pass arguments to functionfa0-fa7$f12-$f19Temporary registers ft8-ft11$f20-$f23

Saved registers fs0-fs7$f24-$f31

30המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©

Page 31: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

)היסטורית( כי תשובה–המדומה? החלק את מקבלf2 אוגר דוקא הערה: למה

מספרי פעם(Backwards Compatibilityההם.) הימים לזכר זוגיים, וזה היו האוגרים

(Silicon Graphics חב' של הרישמי )מהאתר R10000 המעבד דיאגרת–א' נספח

31המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל© האיזור האחראי

לטיפול במספרים לא (elbuod\taolfשלמים )

האיזור האחראי לטיפול במספרים

(sregetniשלמים )

איזור האחראי לטיפול

בכתובות בזיכרון.

Page 32: 6 Bits 5 Bits 5 Bits 5 Bits 5 Bits 6 Bits

32המחבר. רשות ללא החוברת מתוך עמודים להעתיק לצלם, או רשות למחבר. אין שמורות הזכויות כל©