שאלה קטנה...

MotiAd

New member
שאלה קטנה...

אם אני כותב באסמבלי את ה-directive הבא:
.386​
אז כל הקוד שבא אחריו יבוצע במצב מוגן? ואם אני כותב אותו בראשית התוכנית? אז המעבד יכנס למצב מוגן?
 

emissary

New member
תראה

ממה שאני יודע אם אתה כותב
.model small,c .386​
זה אומר למחשב שאתה עובד על מחשב שהמעבד שלו הוא לפחות 386. אני השתמשתי בזאת בשביל להשתמש באוגרים של 32 סיביות.
 

jolp

New member
לא!

יש הליך מסויים שאתה צריך לעשות בכדי להיכנס למצב מוגן. ה- directive שהצגת אך ורק פונה לאסמבלר (המהדר) עצמו ומציין בפניו שאתה מתכוון להשתמש בפקודות ואוגרים, שהוספו למעבד החל מה- 386 הקדום.
 

voguemaster

New member
לא רק זה

יש הבדלים משמעותיים בין קוד 32 לקוד 16 סיביות. כמה חוקים משתנים, אפשר להשתמש בפקודות מסוימות באופן חופשי יותר (אני לא אפרט כי אני לא זוכר הכל), וגם גודל הקוד בזיכרון משמעותית יותר גדול (עד 40% !!). בעיקרון, כשאתה משתמש ב-386 אתה אומר לאסמבלר שמפה והלאה אתה רוצה קוד שמקומפל ספציפית ל-386 ומעלה. אפשר גם להפסיק את זה ע"י מעבר לקוד של 286 אם רוצים באמצע
ככה אפשר לכתוב תוכנית שלמעשה יודעת לעבוד ספציפית עם כמה רמות תאימות של מעבדים. סתם זרקתי פה שימוש אחד לזה..
 

MotiAd

New member
אז אם ככה...

איך אני נכנס למצב מוגן? תודה. הכוונה היא שאם ע"י רשימת ה-directive הזה אני יכול להשתמש באוגרים של 32 ביט בלי להיכנס למצב מוגן?
 

MotiAd

New member
שאלה נוספת...

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

jolp

New member
אוקיי-

למיטב זכרוני, במצב מוגן אתה יכול ליצור פסיקות באמצעות יצירת שני אלמנטים- descriptor, ו- selector. את ה- descriptor אתה מוסיף ל- IDT, הלא זהו אוגר המכיל את טבלת הפסיקות של Protected Mode (למעשה את טבלת ה- descriptor-ים, בניגוד ל- IVT ב- Real Mode, שמכילה את הווקטורים עצמם), ומתוך ה- descriptor אתה יוצר קישור ל- selector עצמו. דוגמאות למימוש תוכל למצוא ברחבי האינטרנט ואם יהיה לי זמן היום אוכל לחפש ולשלוח לך קטע קוד מתוך מערכת ההפעלה הקטנה שבניתי לפני מספר שנים. לגבי שימוש בפסיקות שנכתבו ל- Real Mode כאשר אתה ב- Protected Mode: מישהו כאן כבר העלה את השאלה הזו לפני מספר ימים וגם אז אף אחד לא ידע לענות בדיוק. ספר מעולה שכולל את כל מה שאתה צריך לדעת הוא בעצם ה- Intel Architecture Manual: System Programming. אני זוכר שהדפסתי אותו לפני שלוש שנים- שני קלסרים- והוא כלל כל פיסת אינפורמציה קיימת על Protected Mode. החיסרון היחיד בו הוא שכמעט ואין בו דוגמאות קוד.. מידע כללי על Protected Mode וספציפית על פסיקות תוכל לקרוא פה. הסבר מעולה על פסיקות ב- Protected Mode (גם ב- DPMI) תמצא כאן. מדריך שלם למתכנת בסביבת ה- 386 יש באתר הבא. (יש עוד המון אתרים באינטרנט המספקים מידע רב, אני ממליץ לך לבצע חיפוש על הנושאים שמעניינים אותך)
 

jolp

New member
ראה את התשובה שסיפקתי לשאלתך השנייה

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