jackofalltrades פורסם 2011 במאי 18 Share פורסם 2011 במאי 18 כשקוראים לפונקציה הממומשת באסמבלר, דרך תוכנית הכתובה בסי, הפרמטרים מועברים דרך המחסנית. עד כמה שאני מבין, השוני בין מה שנשמר במחסנית (כמובן רק אם שולחים מצביע) בין המודלים הוא שעבור מודל קטן, רק ההיסט מאוחסן בעוד שבמודל גדול, מאחסנים גם את הסגמנט. כמובן שגם אל IP מתלווה CS, אבל זה לא קשור לפרמטרים.השאלה שלי נוגעת לגישה לפרמטר כשהוא מצביע כפול (לערך), במודל קטן הקוד הוא -mov si,[bp+XX]mov si,[si]mov reg,[si]במודל גדול -mov es,[bp+XXX+2]mov si,[bp+XXX]mov si,es:[si]mov reg,es:[si]זה לא עובד, ואני לא כל כך בטוח שהשתמשתי נכון באוגר סגמנט כאן. אשמח אם תוכלו לתקן אותי. קישור לתוכן שתף באתרים אחרים More sharing options...
jackofalltrades פורסם 2011 במאי 19 מחבר Share פורסם 2011 במאי 19 הצלחתי להבין איפה הייתה הבעיה:גם בכניסה לתוך הרמה השניה של הפויינטר צריך לעדכן את הסגמנט:mov es,[bp+XXX+2]mov si,[bp+XXX]mov si,es:[si]mob es,es:[OLD si]mov reg,es:[si] קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.