לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 23-11-2007, 13:58
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 1 שנכתבה על ידי KAKAdosho שמתחילה ב "שאלה בנוגע לאסמבלר."

המ.. מאיפה בכלל להתחיל..?

נתחיל מזה שלשפה לא קוראים "אסמבלר" אלא "אסמבלי" ואילו האסמבלר הוא מה שמצבע את התרגום הסופי של הקוד לקובץ הרצה.
נשאל את עצמנו רגע מה בעצם יודע המחשב?
המחשב הרי לא יודע אנגלית או עברית, או כל שפה אנושית אחרת לצורך העניין. המחשב מבין שפה שנקראת "שפת מכונה".
שפת מכונה הוא אוסף של תווי 0 או 1 (נקראים ביטים) באורך קבוע (לכל דגם מחשב אורך משלו) שאותם המעבד של המחשב יודע לתרגם.
המחשב קורא את הפקודות סדרתית מהזכרון, מפענח אותן ומבצע. המחשב - האלקטרוניקה שלו - יודע לבצע מספר מוגדר וסופי של פקודות מסויימות שנבנו לתוך הארכיטקטורה שלו, כך שבעזרת סט הפקודות הזה אפשר יהיה לממש כל תוכנת מחשב.

פקודת מכונה מחולקת למספר חלקים, אבל בצורה כללית למדי, נניח כרגע שיש 2 חלקים כאלו: opcode וכל השאר.
בחלק ה-opcode שתופס חלק מהביטים של הפקודה ישנו הקידוד של הפקודה שכרגע מתבצעת.
ישנן פקודות שגורמות לפעולה על הזיכרון, ישנן פעולות על הרגיסטרים של המעבד, ישנן פעולות לוגיות ופעולות אריטמתיות (חשבוניות).
ישנן מאות פקודות כאלו, ולא יתכן שיהיה מתכנת כלשהו שיזכור את הקידוד של כל פקודה כזו: 0001011000011010 (פקודת mov של PDP-11).
בנוסף, קורה שהמתכנת יקיש תו לא נכון, ואז מה? לך תמצא את הטעות שלך....
מהסיבה הזו החליטו לפשט את שפת המכונה בשביל האדם וליצור מה שנקרא "שפת הסף של המכונה" - למעשה זה רמה אחת מעל בסה"כ מעל לשפת המכונה בביטים:
כל פקודת מכונה קיבלה שם שמיוצג בד"כ ב-2 עד 4 אותיות אנגליות שמהוות קיצור לפעולה שהפקודה עושה - כך למשל הפקודה להעביר תוכן של כתובת בזיכרון לכתובת אחרת נקראת mov שזהו קיצור של move (הזז) באנגלית - התכנות נעשה אינטואיטיבי קצת יותר.
בנוסף, האסמבלי יודע לטפל במדוייק גם בחלק ה"כל השאר" של הפקודה המסויימת.
למעשה במקום לכתוב שאתה רוצה להשתמש במה שנמצא בכתובת שאליה מצביע רגיסטר, (011001) אתה כותב (r1).
כך למשל בשביל להזיז את התוכן של הרגיסטר הראשון לתוך הרגיסטר השני של המעבד, אתה כותב:
קוד:
mov r1,r2

במקום רצף של 16 או 32 או 64 אפסים ואחדים.

בנוסף, בגלל שלדגמים שונים של מעבדים יש סט פקודות קצת שונה, לכל מכונה יש שפת סף שונה במידה מסויימת. מה שאני כתבתי הוא נכון עבור מכונה בשם PDP-11. אין זו השפה של המחשבים המודרניים הנקראים x86 או החדשים יותר שהשם שלהם ברח לי עכשיו...

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:20

הדף נוצר ב 0.04 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2025 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר