לדלג לתוכן

תרגול מוסכמת הקריאה של Windows

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

צרו קריאה ל־mixed(1, 2.5, 3, 4.5f, 5). כתבו מראש טבלה של מיקום כל פרמטר, ואז בדקו אותה באסמבלי. הסבירו מדוע הפרמטר השני אינו ב־XMM0.

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

נתחו קטע אסמבלי של פונקציה ששומרת RBX ומשנה RSP. הפרידו בין שטח מקומי, שמירת רגיסטרים, shadow space וכתובת החזרה. ציינו באיזו הוראה בדיוק כל היסט שאתם מציגים תקף.

כתבו הסבר מדוע שינוי typedef של פונקציה מ־double(int,double) ל־double(double,int) אינו המרת נתונים. אין צורך להריץ קריאה בעלת חתימה שגויה.