פורסם 2009 בספטמבר 1616 שנים היי יש לי שאלה.להלן קוד קטן שקימפלתי:int main() { return 0; }וזה האסמבלי שלו שהתקבל אחרי קימפול:08048374: 55 push %ebp8048375: 89 e5 mov %esp,%ebp8048377: b8 00 00 00 00 mov $0×0,%eax804837c: 5d pop %ebp804837d: c3 ret804837e: 90 nop804837f: 90 nopהנא עוד קודvoid main() {}ושוב האסמבלי:8048374: 55 push %ebp8048375: 89 e5 mov %esp,%ebp8048377: 5d pop %ebp8048378: c3 ret8048379: 90 nop804837a: 90 nop804837b: 90 nop804837c: 90 nop804837d: 90 nop804837e: 90 nop804837f: 90 nopכמות ה NOPים בקוד השני מפצה על חוסר הפקודה mov eax, 0x0 (שהיא לוקחת 5 ביתים) ולכן בקודה שני יש 5 NOPים יותר.השאלה למה בכלל צריך אותם?מה זה נותן?תודה רבה מראש!
פורסם 2009 בספטמבר 1616 שנים http://en.wikipedia.org/wiki/NOPA NOP is most commonly used for timing purposes, to force memory alignmenthttp://en.wikipedia.org/wiki/Data_structure_alignment
פורסם 2009 בספטמבר 1616 שנים מחבר חשבתי שזה הסיבה אבל לא הצלחתי להבין למה מהקוד הנ"ל. אבל שכחתי שיש גם עוד הרבה קוד פרט ל MAIN צעמו.תודה!
פורסם 2009 בספטמבר 1616 שנים עוד סיבות ל-NOP:* במעבדים עם branch delay slots, בדרך כלל תמצא NOP-ים, במיוחד בחזרה מפונקציות.* על מנת להשאיר מקום ל-patch עתידי (נדיר).* self modifying code.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.