שפת מכונה
מתוך ויקיפדיה, האנציקלופדיה החופשית
שפת מכונה היא אוסף של הוראות המובן בצורה ישירה (ללא כל תרגום) על-ידי המעבד של המחשב, ומבוצע על-ידו בעת פעולת המחשב.
הוראות שפת המכונה מוצגות כרצף של סיביות שנקרא קוד בינארי, (כלומר רצף של הספרות אפס ואחת), שבני אדם מתקשים להבינו. למשל, הרצף 10001001110110000000000111010000 מורה למעבד מסדרת x86 של אינטל לחבר את המספרים המאוחסנים בשניים מהאוגרים הפנימיים של המעבד הנקראים BX ו-DX ולהציב את הסיכום באוגר AX.
כל הוראה בשפת המכונה מורה למעבד לבצע פעולה מסוימת. פעולת המחשב היא ביצוע סדרתי של ההוראות הנמצאות בזכרון. סדר הביצוע עשוי להשתנות על-ידי הוראת הסתעפות למעבד ובאופן מוחלט או מותנה, להמשיך את ביצוע הוראות שפת המכונה מכתובת אחרת בזכרון.
לכל מעבד יש שפת מכונה (או סט פקודות) משלו, שהיא המאפיין החשוב ביותר של מעבד זה. למעשה, שני מעבדים שקולים זה לזה מבחינה פונקציונלית כאשר יש להם אותה שפת מכונה, ללא תלות באופן המימוש האלקטרוני של שפה זו. בעת יצירת דור חדש של מעבד, משתדל היצרן שהמעבד החדש ידע לבצע את שפת המכונה של המעבד הקודם ("תאימות לאחור"), כדי לאפשר הפעלה של תוכנות שפותחו או קומפלו עבור המעבד הקודם גם באמצעות המעבד החדש.
במעבדים מסוימים לכל ההוראות בשפת המכונה אורך אחיד, ובאחרים קיימות הוראות באורכים אחדים (לפי קוד ההוראה יודע המעבד את אורכה).
יצירת תוכניות שימושיות בשפת מכונה כמעט ואינה מעשית. בדרך כלל נכתבות התוכניות בשפת תכנות כלשהי, והן מתורגמות לשפת מכונה על ידי תוכנית תרגום הנקראת מהדר. שפת התכנות הקרובה ביותר לשפת המכונה נקראת שפת סף (Assembly), והמהדר שלה הוא האסמבלר.
בעשרות השנים הראשונות לקיום המחשב המגמה הייתה להרחיב את אוצר ההוראות של המעבד, כך שניתן יהיה לבצע פעולות מורכבות יותר באמצעות הוראה בודדת. מעבדים בעלי אוצר הוראות מורחב מכונים מעבדי CISC (כלומר: Complex Instruction Set Computer). למגמה זו היה יתרון בולט בעת תכנות בשפת סף, אך בעת המעבר לתכנות בשפות עיליות יתרון זה מתגמד.
מניתוח כמותי של התפלגות הפקודות הנוצרות על ידי המהדרים, בין אם בשל מבנה המהדר ובין אם בשל נוהגי כתיבת התוכנה, נמצא כי רפרטואר הפקודות של המעבד אינו מנוצל, וכי במרבית המקרים (כ־80 אחוז) מנוצל אך מעט (כ־20 אחוז) מרפרטואר הפקודות של המעבד. כתוצאה מכך חל מהפך מחשבתי בכל הנוגע לעיצוב ארכיטקטורת המעבד הרצויה, אשר הוביל לפיתוח מעבד בעל מספר הוראות מצומצם (RISC - Reduced Instruction Set Computer). מספר ההוראות המצומצם, הביא להקטנת שטח הפיסה להגברת יעילות המיתוג הפנימי ולמהירות ביצוע גבוהה מאוד של כל הוראה, כך שבמבחני השוואת ביצועים, ובעיקר במבחני יחס תועלת, עשויים ביצועיו של מעבד זה להיות טובים מאלה של מעבד בעל מספר הוראות רב. כיום הבדל זה זניח כי מצד אחד גם מעבדי CISC ממירים את הפקודות לפקודות מיקרוקוד פשוטות ומצד שני התגלה כי היתרון מבחינת התכנון של המעבד של RISC איננו משמעותי (את רוב התוצאות החיוביות ניתן לממש גם ב־CISC), כתוצאה מכך ההבדל המעשי בין שני הסוגים נעלם כמעט לחלוטין.