אסמבלי x86/השוואה בין אסמבלי לשאר שפות התכנות
מראה
אסמבלי x86 |
---|
|
שפות התכנות מתחלקות ל-3 סוגים עיקריים:
- שפת מכונה - שפה שבה כל הנתונים הם מספרים המתאימים לסוגי הפקודות שהמכונה (מחשב) יכולה לקבל. למשל אם יש פקודת חיבור היא תיכתב במספר 1, פקודת חיסור 2 וכן הלאה. (כמובן המספרים מיוצגים בשיטה הבינארית שנראה להלן) בשפה זו, כל מי שירצה לתכנת יצטרך טבלה ארוכה המכילה את כל סוגי הפקודות שיכולות להיות.
- שפת סף-אסמבלי - זו השפה שאנו לומדים כרגע. בשפה זו לכל פקודת מכונה יש שם הגיוני וגם המתכנת עצמו יכול לתת שמות למשתנים במקום לציין את מיקומם בזיכרון באמצעות מספרים. אולם, מספר הפקודות שבה מוגבל לסוג המעבד המסוים. עקב ספציפיות הפקודות בשפה (בגלל תרגומן ביחס של 1:1 לשפת המכונה), לרוב יידרש מספר רב של פקודות אף על מנת לבצע את הפעולות הפשוטות ביותר לתיאור בשפת האדם הטבעית.
- שפה עילית - שפה המיועדת לשימוש על ידי מתכנתים אנושיים ולכן, מזכירה בתכונותיה התחבירתיים שפה האנושית. שפה עילית לרוב תהיה קריאה יותר לבני אדם ואף תסתיר לחלוטין חלקים משמעותיים ממערכת המחשוב. דוגמאות לשפות עיליות: C, Java, Python.
השימוש באסמבלי
[עריכה]כאמור, אסמבלי אינה קשה ללימוד כמו שפת מכונה, אך מסובכת יותר ללמידה משפות עיליות. מאידך, יש לה כמה מעלות על פני שפה עילית:
- לא צריכים מהדר המתאים לחומרה ספציפית, כך גם הזיכרון שהיא תופסת פחות גדול, כי משתמשים רק בפקודות הנדרשות.
- ניתן לגשת לכל מקום בחומרה בדיוק רב. כך למעשה, אפשר לבצע כל פקודה שהמחשב יכול לעשות במדויק.
- ניתן להבין בדיוק מה התוכנה עושה, וכך לחסוך במשאבים ולתקן פרצות אבטחה בצורה ברורה.
- עקב תאימות השפה לשפת המכונה, ניתן להנדס לאחור וירוסים וקבצי הרצה שונים, וכך למצוא את הקוד המזיק בהם ולהבין את סדר פעולתם.