מימוש של Exception Handling

methadonepretty

New member
מימוש של Exception Handling

יו, יצא לי לתהות הרבה לאחרונה איך ממומש ברמת שפת המכונה רעיון תפיסת השגיאות שקיים בהרבה שפות. נלך על דוגמה ב-VB הידועה לשמצה, רק בגלל רמת הבטיחות הגבוהה בה. נגיד שיש לי בתוך סאב שני משתני double, ואני מבצע פעולת חילוק ביניהם. מהפעולה הזו יכולות לעלות לפחות שתי שגיאות ש-VB יודעת לתפוס: חלוקה באפס ו-Overflow (במקרה שהמחלק קטן מספיק והמחולק גדול מספיק):
Public Sub Bleh() On Error Goto MyErrorHandler Dim a As Double Dim b As Double Dim c As Double a = ערך מסוים b = ערך מסוים c = a / b MyErrorHandler: טיפול בשגיאה End Sub​
קוד נקי. אז מה באמת קורה כשהשגרה הזו מתורגמת לקוד מכונה? איפה מתבטא החלק שתופס שגיאות? האם איפה שביצענו פעולת חילוק קוד המכונה יהיה רצוף המון המון בדיקות וזריקות (CMP ו-JMPים למיניהם) שיתנו מענה לכל השגיאות שיכולות לצוץ, או שיש דרך יותר מתוחכמת לממש מנגנוני תפיסת שגיאות (מה שנראה לי יותר סביר)? אם קיימים כאלה, אני אשמח אם תפנו אותי למקורות שסוקרים אותם באופן כללי. מקווה שהשאלה הובנה. תודה מראש!
 

DadleFish

New member
מצאתי כמה מקורות,

חפש בגוגל "low level exception handling" ותמצא גם.
 

methadonepretty

New member
Cheers!

ממליץ על קישור בשם Exception Handling With Zero Overhead שמופיע בעמוד הראשון בגיגול.
 
למעלה