אוגרים

InfectedM

New member
אוגרים

שלום לכולם :) שאלה לי. בתחילה היו האוגרים של ה 16 ביט, נכון? כאשר כל אחד מהם חולק ל"גבוה" ו"נמוך". לאחר מכן עם יציאת מעבד ה 386 נחשפנו לאוגרים בעלי 32 ביט(וואו!), כאשר עכשיו הקידומת שלהם היא E(EAX,EBX) וכן הלאה. 1. האם החלקים ה"גבוהים" וה"נמוכים" גדלו, או שמא נוצרו חדשים? עכשיו, לאחרונה יצאו מעבדי 64 ביט. 2. א. מהי ה"קידומת" שנוספה לאוגרים? ב. שוב, האם החלקים ה"גבוהים" וה"נמוכים" גדלו, או שמא נוצרו חדשים? תודה לעונים :)
 

codec

New member
לגבי 32 ביט

אף חלק לא "גדל". EAX זה כל ה-32 ביט. AX זה ה-16 ביט הנמוכים (0-15) AL זה ה-8 ביט הנמוכים (0-7) AH זה ה-8 ביט הבאים (8-15) לכל שאר ה"חלקים" אין שמות... בנוגע ל-64 ביט, אם אני לא טועה, כבר שינו את כל שיטת העבודה. יש הרבה יותר רגיסטרים (128) עם שמות r0,r1...
 

InfectedM

New member
אז ב EAX מה שמעל AX הוא ללא שם?

איך אני פונה אליו? איך אני קורא למישהו בלי שם? :)
 

codec

New member
הוא בא לבד

סתם. אתה צריך להביא אותו למקום עם "שם", למשל ע"י ביצוע rotate לביטים: ror eax,16 יבצע החלפה של 16 הביטים העליונים עם התחתונים (אפשר גם rol), ואז מה שהיה בביטים העליונים נמצא "בתוך" AX.
 

InfectedM

New member
הבנתי. מכיוון שאנו לא לומדים על 386

לא הייתי מודע לקיומה של הפקודה הזו. חוצמזה שרק התחלנו ללמוד ;) אז בשביל לנצל את כל נפח האוגר עליי להשתמש כל הזמן ב rotate?
 

codec

New member
לא בדיוק

אם אתה עובד עם מספרים 32 ביט, אז תשאיר את האוגר כמו שהוא ותעבוד עם EAX. אין הרבה מקרים בהם תעבוד ב-16 ביט עם רגיסטרים של 32 ביט (או להיפך). בכל מקרה, שיהיה בהצלחה.
 

J u s t y

New member
תיקון בנוגע ל- 64

מה שאתה מדבר זה על הארכיטקטורה של Itanium של Intel (עם 128 רגיסטרים רגילים ועוד נקודה צפה וכו...) לאחרונה AMD יצאה עם ארכיטקטורה שמרחיבה את הארכיטקטורה 32 של אינטל, ובעקבות זה גם אינטל יצאה עם ארכיטקטורה דומה שבה eax הפך ל- rax. בארכיטקטורה הזאת יש את אותם רגיסטרים ארכיטקטונים כמו ב- 386 (רק עם קידומת R). יש הרבה דברים שונים מבחינת מוסכמות של קומפיילרים ושל לינקרים כך שזה לא כמו שהיה המעבר מ- 16 ל- 32.
 
למעלה