ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
אורח · ·
 

הודעה פורסם: 28/10/2009 - 19:12
נושא ההודעה: מה ההבדל בין section לsegment וכיצד הוא מתבטא בזמן הריצה ?

הבנתי שבתוך סגמנט יכולים להיות כמה סקשנים, האם זה נכון ?
מי משתמש בסגמנט (CS,DS,ES, וכ') ומי משתמש בסקשן ? (.text,.data,.code, כולם איפה נמצאים ? )

האם ld מתחשב בשניהם ?
מה קורה בזמן הרצת התכנית ? נבדקים הסגמנטים הבסיסיים ואז הסקשנים להרצה (אחרי שפורסים את הPE) ?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ik_5לא בפורום כעת ת.הצטרפות: 16/04/2002 · הודעות: 3027 · מיקום: ישראל
 

הודעה פורסם: 28/10/2009 - 19:38
נושא ההודעה:

אם עושים סלט, אני מעדיף סלט ירקות.

ככה, יש לך כמה פורמטי ריצה כדוגמת COFF ו GAS. אני לא בטוח מה הפורמט הנפוץ יותר (ויש רשימה ארוכה יותר).
בתוך הפורמט ריצה ישנם הרבה חלקים אשר מגדירים סוגי מידע שונים, כדוגמת אתחול מידע דינמי לספריות מקושרות, לבין אתחול זכרון למידע בקבצי ריצה.
יש הגדרה של מבנים שונים, ויש מקום לשמור מידע של המשתמש וכמובן מקום לשמור קוד (יש עוד הרבה דברים, אבל ממש אין לי סבלנות להסביר עליהם כרגע).

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

PE זה פורט קובץ ריצה של Microsoft Windows. בהרבה מהיוניקסים קבצי הריצה הם קבצי ELF בכלל.

השוני בניהם זה הצורה שהם מתנהגים ושומרים את המידע בתוכם בצורה כזו שGAS (ושאר הפורמטים) יכולו לרוץ.

טוב זהו נגמרה ההפסקה חזרה לעבודה Smile
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
LemonLimeלא בפורום כעת ת.הצטרפות: 04/08/2008 · הודעות: 663 · מיקום: גורגוניה
 

הודעה פורסם: 28/10/2009 - 20:04
נושא ההודעה:

נראה לי ש-gas זה לא פורמט אלא קיצור של gnu assembler...

לפחות ב-elf, יש בקובץ הגדרה של פריסת התוכנה בזיכרון (שנעשית עם מערך של מבנים שנקראים segments, כשכל segment מגדיר מיפוי של חלק מהזיכרון ואיך לאתחל אותו עם נתונים מהקובץ), והגדרות על התפקיד והמבנה של חלקים בקובץ וב-image של התוכנה (אלה נקראים sections, כל section מגדיר מיקום של משהו, למשל יש אחד של קוד ואחד read only data ואחד מגדיר קישוריות לספריות חיצוניות וכו~)
נראה לי גם שיש דרישה ש-section אחד לא יתפרש על שניים או יותר segmentים, ככה שיוצא שכל segment מכיל section אחד או יותר~

בזמן הרצת התוכנית התוכנה נטענת לזיכרון לפי המיפויים שהוגדרו במערך ה-segmentים, נפתרות התלויות הדינמיות שהוגדרו ב-section המתאים (ותוך כדי כך נטענים עוד כמה ספריות שגם הן קבצי elf...), נקראים ה-constructors שהוגדרו ב-section שנקרא .ctors, אז מורצת הפונקציה main, אחריה ה-desctructors שהוגדרו ב-section שנקרא .dtors, ואז התוכנה משוחררת מהזיכרון~
(דילגתי על הרבה דברים, לא נורא~)
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ MSN Messenger מספר ICQ 
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח
  2. ik_5
  3. LemonLime