22-04-2005, 12:57
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
תגובה לשניכם
דבר ראשון, לגבי פסיקות.
רוב הלימוד של assembly נעשה בכלים שנכתבו עבור סביבת DOS, לכן נוהגים ללמד את השפה עם פסיקות שנועדו לסביבה זו, כמו הפסיקה 21H, בעוד שלמעשה אנו מעוניינים (לפחות במקרה שלנו) לעבוד ישירות עם החומרה, ולא עם "מעטפת" במקרה שלנו, מערכת ההפעלה DOS, שמספקת לנו אמצעי גישה משלה לחומרה.
לגבי האמולטור Bochs, ממתי אמולטור ל-PC, משנה אם מריצים עליו לינוקס או לא?? (:
זהו אמולטור למחשב PC (או בשם שאנו מכירים פלטפורמה x86) ואתה יכול להריץ עליו כל מערכת הפעלה שרצה על פלטפורמה כזו.
השימוש בפסיקות bios מבטיחות ניידות מוחלטת באותה פלטפורמה (x86) כי מדובר על אותו סט פקודות. כלומר מה שרץ על ה-PC שלי ירוץ גם על ה-PC שלך.
שים לב שהחל מסידרה 386, כשנחשפנו ל-portected mode של אינטל - ובכלל סדרת pentium המהפכנית הביאו סטים חדשים של פקודות שלא היו קיימים עד כה. סדרות המעבדים היום רחוקות מלהקרא x86, אך הן עדיין תומכות במכלול הפקודות.
אני ממליץ לפני הקפיצה למים העמוקים של protected mode, מערכת קבצים וכו, לבצע את השלבים הבאים:
1. ללמוד boot loaders - מאוד חשוב.
2. לכתוב תכנית שתציג סתם מלל על המסך.
3. לכתוב סביבה לקבלת קלט מהמשתמש (תחילתו של shell).
על מנת להגיע לזה, אתה למעשה צריך להתחיל לכתוב את הספריות של C לבד!, פה אין לך מי שיעשה בשבילך הקצאת זיכרון באמצעות פונקציה, או יוציא פלט למסך.
את הספריות (שאתה מכיר כסטנדרטיות) - אתה תצטרך לכתוב לבד...אך אל דאגה, אם תסתבך, תתקשה או תמצא חוסר כלשהו - תמיד תוכל להציץ בקוד המקור של linux. למעשה כשכתבתי את ספריית string.h שלי, ובדקתי פונקציה מסויימת בקוד של linux, נדהמתי לראות איך פונקציה שאני כתבתי ב5 שורות מבולבלות הוא כתב בחצי שורה אלגנטית, מאוד עוזר ללמידה ההשוואה הזו.
לכתיבת הספריות הסטנדרטיות, כמובן שתצטרך assembly, לדוגמה:
הפונקציה putch שאני כתבתי לספרייה stdio
קוד PHP:
void putch(char cp) { asm{ mov ah, 0fh int 10h mov ah, 0eh mov al, cp mov bl, 02h int 10h } }
הערות לקוד:
1. putch הוא הגרסה שלי ל-putchar.
2. ב-stdio מוגדרת putchar ככה:
זה תחביר של assemly שמתאים ל-TC, אם תעדיף להשתמש ב-GCC, תמצא שיטה מעט שונה לכתיבת assemly, שבהתחלה אולי תראה לך יותר מסובכת, אך היא הרבה יותר מסודרת ומפרידה את הקלט והפלט מקוד הביצוע.
אני שוב חוזר על ההמלצה להשיג את הספר שאני משתמש בו, הספר דן בכל סדרת המעברים x86 עד וכולל פנטיום, בתכנות עבורם, בתכנות ועבודה עם מערכת קבצים, ניהול זיכרון, עבודה ב-protected mode (זיכרון וירטואלי וסגמנטציה) ועוד...
ניתן למצא אותו בכל הספריות האוניבסיטאיות של פקולטות להנדסה חשמל/תוכנה.
רק הערה לגבי fat32....
הספר מכיל גם חומר על ניהול קבצים כמו שאמרתי. רק אל תשכח שלנהל את הקבצים שלך לא אומר שזה חייב/צריך להיות fat32. אתה יכול ליצור מערכת קבצים משלך....
בהצלחה.
נערך לאחרונה ע"י fat fish בתאריך 22-04-2005 בשעה 13:45.
|