עבור לתוכן

שאלה על הידור ושפת מכונה

Featured Replies

פורסם

למה אחרי שהמהדר הופך את שפת התיכנות לשפת מכונה, אי אפשר פשוט לשמור את השפת מכונה במקום כל פעם לעשות את תהליך ההידור מחדש?

פורסם

למה אחרי שהמהדר הופך את שפת התיכנות לשפת מכונה, אי אפשר פשוט לשמור את השפת מכונה במקום כל פעם לעשות את תהליך ההידור מחדש?

מה בדיוק הבעיה? אם עשית הידור ולדוגמא יצרת EXE, אתה יכול אפילו לערוך את "תוכן" שפת המכונה על ידי שימוש בתוכנת DEBUG שקיימת מאז ימי DOS העליזים. כמו כן, אם אתה רק עושה הידור ולא יוצר EXE, הרי יצרת קובץ OBJ שגם אותו אתה יכול לשמור ולהדביק (LINK) לספריות לצורך יצירת EXE.

פורסם

באמת שאלה מוזרה. רוב סביבות העבודה (וגם make) לא אמורים לבנות קבצים אם הם לא חייבים (כלומר - לא לבנות קבצי object אם לא שינית את הקבצים שמתקמפלים לתוכו ולא לבנות קבצי executables אם לא השתנו הקבצים שמתלנקג'ים לתוכו).

יכול להיות שאתה עובד ידנית עם קומפיילר או עם סביבת עבודה שלא דואגת לזה?

פורסם
  • מחבר

יכול להיות שאתה עובד ידנית עם קומפיילר או עם סביבת עבודה שלא דואגת לזה?

לא.

סתם שאלתי בלי שום קשר......

פורסם

אתה יודע מה זה שפת מכונה? שפת מכונה זה בסך הכל 1 ו0. לא נראה לי שתבין משהו אם תקרא קובץ שמלא ב1 ו0.

פורסם

למה אחרי שהמהדר הופך את שפת התיכנות לשפת מכונה, אי אפשר פשוט לשמור את השפת מכונה במקום כל פעם לעשות את תהליך ההידור מחדש?

כמו שאמרו פה, קובץ ה-EXE הוא שפת המכונה שנוצרה ע"י המהדר...

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

פורסם

אתה יודע מה זה שפת מכונה? שפת מכונה זה בסך הכל 1 ו0. לא נראה לי שתבין משהו אם תקרא קובץ שמלא ב1 ו0.

אפשר להפוך את זה לhex ואז זה קצת יותר מובן

פורסם

ואתה תבין משהו בHEX?

פורסם

לכל פקודה יש op code משלו. ככה שאם יש לך את המספר לא בעייה למצוא את הפקודה שהוא מייצג

פורסם

ואיפה הטבלה של המס-פקודה נמצאת?

פורסם

אם אתה עובד על מעבד x86 של אינטל אז אפשר למצוא את המדריך באתר של אינטל:

http://developer.intel.com/design/pentiumii/manuals/243191.htm

ואני מניח שאפשר למצוא משהו דומה גם עבור AMD, מוטורולה או כל מעבד אחר שקיים.

פורסם

רוב הפקודות מתאימות גם לAMD? כי את רוב התוכנות לא מתכנתים כך שיתאימו למעבד אחד.

או שמערכת ההפעלה יכולה להמיר בין הפקודות השונות כך שיתאימו למעבד הספציפי שאתה עובד בו.

ואם יכולים לעשות את זה, מה מונע ממני לעשות DECOMPILE?

פורסם

ל-AMD ולאינטל אותה ארכיטקטורה של x86 שזה אומר אותו סט פקודות

AMD64 הוסיף כמה פקודות של-64 בנוסף ל-x86 אבל אפלקציה שמפותחת ל-AMD64 לא תפעל על אינטל.

פורסם

רוב הפקודות הן דומות אבל לא תמיד כל קוד שקימפלת עבור x86 יעבוד על AMD, גם לא כל המעבדים תומכים באותם סטים של פקודות (למשל סט הפקודות של 3Dnow שמעבדי AMD תומכים בהם ואילו מעבדי אינטל לא, או פקודות של המעבד המתמטי שה386 לא תומך בהם).

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

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים