
23-11-2007, 13:58
|
|
|
|
חבר מתאריך: 30.07.05
הודעות: 949
|
|
המ.. מאיפה בכלל להתחיל..?
נתחיל מזה שלשפה לא קוראים "אסמבלר" אלא "אסמבלי" ואילו האסמבלר הוא מה שמצבע את התרגום הסופי של הקוד לקובץ הרצה.
נשאל את עצמנו רגע מה בעצם יודע המחשב?
המחשב הרי לא יודע אנגלית או עברית, או כל שפה אנושית אחרת לצורך העניין. המחשב מבין שפה שנקראת "שפת מכונה".
שפת מכונה הוא אוסף של תווי 0 או 1 (נקראים ביטים) באורך קבוע (לכל דגם מחשב אורך משלו) שאותם המעבד של המחשב יודע לתרגם.
המחשב קורא את הפקודות סדרתית מהזכרון, מפענח אותן ומבצע. המחשב - האלקטרוניקה שלו - יודע לבצע מספר מוגדר וסופי של פקודות מסויימות שנבנו לתוך הארכיטקטורה שלו, כך שבעזרת סט הפקודות הזה אפשר יהיה לממש כל תוכנת מחשב.
פקודת מכונה מחולקת למספר חלקים, אבל בצורה כללית למדי, נניח כרגע שיש 2 חלקים כאלו: opcode וכל השאר.
בחלק ה-opcode שתופס חלק מהביטים של הפקודה ישנו הקידוד של הפקודה שכרגע מתבצעת.
ישנן פקודות שגורמות לפעולה על הזיכרון, ישנן פעולות על הרגיסטרים של המעבד, ישנן פעולות לוגיות ופעולות אריטמתיות (חשבוניות).
ישנן מאות פקודות כאלו, ולא יתכן שיהיה מתכנת כלשהו שיזכור את הקידוד של כל פקודה כזו: 0001011000011010 (פקודת mov של PDP-11).
בנוסף, קורה שהמתכנת יקיש תו לא נכון, ואז מה? לך תמצא את הטעות שלך....
מהסיבה הזו החליטו לפשט את שפת המכונה בשביל האדם וליצור מה שנקרא "שפת הסף של המכונה" - למעשה זה רמה אחת מעל בסה"כ מעל לשפת המכונה בביטים:
כל פקודת מכונה קיבלה שם שמיוצג בד"כ ב-2 עד 4 אותיות אנגליות שמהוות קיצור לפעולה שהפקודה עושה - כך למשל הפקודה להעביר תוכן של כתובת בזיכרון לכתובת אחרת נקראת mov שזהו קיצור של move (הזז) באנגלית - התכנות נעשה אינטואיטיבי קצת יותר.
בנוסף, האסמבלי יודע לטפל במדוייק גם בחלק ה"כל השאר" של הפקודה המסויימת.
למעשה במקום לכתוב שאתה רוצה להשתמש במה שנמצא בכתובת שאליה מצביע רגיסטר, (011001) אתה כותב (r1).
כך למשל בשביל להזיז את התוכן של הרגיסטר הראשון לתוך הרגיסטר השני של המעבד, אתה כותב:
במקום רצף של 16 או 32 או 64 אפסים ואחדים.
בנוסף, בגלל שלדגמים שונים של מעבדים יש סט פקודות קצת שונה, לכל מכונה יש שפת סף שונה במידה מסויימת. מה שאני כתבתי הוא נכון עבור מכונה בשם PDP-11. אין זו השפה של המחשבים המודרניים הנקראים x86 או החדשים יותר שהשם שלהם ברח לי עכשיו...
מקווה שהבהרתי קצת...
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
|