הסכם קריאה
ראינו עד עכשיו פרט אחד בהסכם הקריאה.
כתובת החזרה צריכה להיות באוגר ra (שהוא אוגר x1).
הסכמי קריאה יכולים להיות די מסובכים והסכם הקריאה הנהוג
על rv64 בהחלא אינו פשוט.
אנו נלמד הסכם חלקי שיספיק לחלוטין לצרכנו.
אנו נציג את הסכם הקריאה פעם מצד הקורא ופעם מצד הנקרא.
מצד הנקרא
- כתובת החזרה נתונה באוגר ra (אוגר x1)
- קיימת מחסנית ואוגר sp (אוגר x2) מצביע לתחתיתה
- המחסנית צומחת מכתובות גבוהות לכתובות נמוכות
- האוגר sp צריך להיות על כתובת אינטגרלית
- ארגומנטים נמצאים באוגרים a0 עד a7 (כלומר באוגרים x10 עד x17)
- אם יש יותר משמונה ארגומנטים, אזי מהשמיני הם נמצאים על המחסנית
- אנחנו לא מטפלים בארגומנטים שגודלם מעל 8 בתים.
- מצביע, לא משנה למה, הוא בגודל 8 בתים.
- אפשר להרוס את האוגרים t0 עד t6 (x5, x6, x7, ו-x28 עד x31), a0 עד a7 (x10 עד x17)
- אסור להרוס את האוגרים s0 עד s11 (x8ת, x9, x18-x27) ואת sp
- אנחנו לא נוגעים באוגרים gp ו-tp (x3 ו-x4)
- ערך חזרה, אם יש, יהיה באוגרים a0 ו-a1.