LEA וOFFEST באסמבלר

  • פותח הנושא EETB
  • פורסם בתאריך

EETB

New member
LEA וOFFEST באסמבלר

לפי ההיגיון, לא יעשו סתם 2 פקודות שעושות אותו דבר... חוץ מהבדל הסינטקס חייב להיות עוד הבדל, מישהו יודע מהו?
 
פשוט מאוד

Lea זאת פקודה הטוענת את הכתובת האפקטיבית של המשתנה/מערך או מה שלא יהיה וoffset זאת הנחיה (ולא פקודה !!!) לקומפיילר להחזיר מטבלת הסמלים קבוע המתאר את הכתובת היחסית של המשתנה.
 

EETB

New member
תודה רבה

אז מבחינת יעילות ,כדאי להשתמש באופסט?
 

שאקל

New member
Lea עדיף מOffset

בLea משתמשים כאשר לא יודעים את הכתובת בזמן ריצת התוכנית. ההבדל בין Offset לLea זה שבOffset הכתובת מחושבת בזמן קומפילציה ואילו בLea הכתובת מחושבת בזמן ריצה.
 

twiti

New member
הפקודה offset קצרה יותר לביצוע

מכיוון שהיא מתבצעת בזמןקומפילציה ולכן השתמש בה אם אתה יודע את כתובת המשתנה בזמן כתיבת הקוד (כלומר אם הקומפיילר יודע את הכתובת). אם אינך יודע את הכתובת, והיא ידועה רק בזמן ריצה, אז השתמש ב-LEA.
 

EETB

New member
ok תודה, אז אם הבנתי

שאני מגדיר משתנה אצלי בDATA תמיד להשתמש בOFFSET, שאני מקבל משתנה לא ידוע להשתמש בLEA.
 

twiti

New member
בערך. למשתנה שאתה הגדרת באופן

סטאטי אכן השתמש ב-offset. לגבי הקצאות אחרות, אם נאמר לך שזהו משתנה פורמאלי, אז ניתן להשתמש ב-offset, אך אם לא ידוע אם זוהי הקצאה דינאמית או סטאטית, השתמש ב-lea. מקווה שהייתי ברור.
 
למעלה