white shadow 3
New member
פקודת move באסמבלי ושיטות מיעון
משהו קטן שהבנתי שאני כנראה לא ממש מבין...
נניח ויש לי פונקציה שנקראת ע"י פונקציה אחרת, ונניח כי חתימתה היא:
zz a [int A[], int b] zz
אז ממה שאני מבין, ב-frame של הפונקציה הקוראת יהיה שדה של b, אחד מתחתיו את הכתובת של האיבר הראשון ב-A, אחת מתחתיו return address ואז מתחיל ה-frame של הפונקציה a...
נניח אני כותב את הפקודה:
zz movl 8(R8), R2 zz
(נניח שהימני זה היעד והשמאלי זה המקור..)
האם זה מעביר לרגיסטר R2 את הכתובת של האיבר הראשון ב-A או את הערך שלו?
כי בגדול אני יודע ש-() זאת גישה לתוך זיכרון (כלומר ללכת לדוגמא לכתובת שבתוך R8ּּ+8 ואז ללכת לתא בזיכרון שמוצבע ע"י הכתובת הזו, אבל אז - אם אני רוצה שרגיסטר מסויים יכיל את כתובת האיבר הראשון במערך ולא את הערך שלו - איך אני מבצע זאת?
(מקווה שלא עשיתי סלט מכל הדברים האלה
)
תודה!
משהו קטן שהבנתי שאני כנראה לא ממש מבין...
נניח ויש לי פונקציה שנקראת ע"י פונקציה אחרת, ונניח כי חתימתה היא:
zz a [int A[], int b] zz
אז ממה שאני מבין, ב-frame של הפונקציה הקוראת יהיה שדה של b, אחד מתחתיו את הכתובת של האיבר הראשון ב-A, אחת מתחתיו return address ואז מתחיל ה-frame של הפונקציה a...
נניח אני כותב את הפקודה:
zz movl 8(R8), R2 zz
(נניח שהימני זה היעד והשמאלי זה המקור..)
האם זה מעביר לרגיסטר R2 את הכתובת של האיבר הראשון ב-A או את הערך שלו?
כי בגדול אני יודע ש-() זאת גישה לתוך זיכרון (כלומר ללכת לדוגמא לכתובת שבתוך R8ּּ+8 ואז ללכת לתא בזיכרון שמוצבע ע"י הכתובת הזו, אבל אז - אם אני רוצה שרגיסטר מסויים יכיל את כתובת האיבר הראשון במערך ולא את הערך שלו - איך אני מבצע זאת?
(מקווה שלא עשיתי סלט מכל הדברים האלה
תודה!