פורסם: 04/01/2006 - 22:23
נושא ההודעה: מה ההבדל בין executable לבין binary ?
|
ל"ת
|
|
חזרה לתוכן הדיון |
פורסם: 04/01/2006 - 23:08
נושא ההודעה:
|
אני חושב שexcutable הוא קובץ בר ביצוע (יכול להיות סקריפט) כלומר לא בהכרח בינארי
ובינארי הוא בינארי- שקומפל למחשב עם 0 ו1....
או שאולי אין הבדל בניהם...
_________________
|
|
חזרה לתוכן הדיון |
פורסם: 04/01/2006 - 23:37
נושא ההודעה:
|
עד כמה שאני יודע, קובץ בינארי הוא קובץ שאינו טקסטואלי (אבל יכול להיות שאני טועה פה).
קובץ בר-ריצה, הינו קובץ בעל הרשאות ריצה שאפשר להריץ אותו. למשל ספרייה ב־C (שזה אוסף פונקציות/מחלקות), אי אפשר להריץ, אבל הם בינאריים.
לדוגמא, cairo - מנוע רינדור, משמש את גנום 2.12 לציור הגרפיקה על המסך.
זוהי סיפריה, קרי אוסף פונקציות בשפת C, שאפשר להשתמש בהם ליצור קבצי ריצה, אבל אותם בתאכלס אי אפשר להריץ.
עוד דוגמא, אולי יותר מובנת, זה קובץ DOC של word. אחד הדברים הבעייתיים בו זה שהוא בינארי ולא טקסטואלי (אם תפתחו אותו עם עורך טקסט רגיל, תראו ג'יבריש ולא בהכרח משהו קריא).
עוד דוגמא, תמונת png, בינארית אך לא ברת ריצה (אתה יכול לפתוח אותה עם תוכנה מסויימת - אותה תוכנה היא ברת-ריצה).
מקווה שזה עוזר.
|
|
חזרה לתוכן הדיון |
פורסם: 04/01/2006 - 23:59
נושא ההודעה:
|
קובץ executable הוא קובץ בר הרצה כלומר כל קובץ שיש בו הוראות להפעיל תוכנית מסוימת.
בהגדרה זאת כלולים גם סקריפטים.
קובץ בינארי הוא קובץ שמכיל פקודות מכונה=אסמבלי שעובד עם פקודות המעבד ומבוקר ע"י מערכת ההפעלה.
בהגדרה זאת לא כלולים תוכניות שנעשו בגא'ווה אלא אם הם קומפלו בעזרת javac.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 00:29
נושא ההודעה:
|
sijp : | עד כמה שאני יודע, קובץ בינארי הוא קובץ שאינו טקסטואלי (אבל יכול להיות שאני טועה פה).
|
http://en.wikipedia.org/wiki/Binary_file
עפ"י ויקיפדיה, אני צודק...
נדב, קובץ בינארי אינו בהכרח חייב להכיל פקודות מכונה. תמונת png כמו שאמרתי קודם, אינה מכילה שום פקודה.
קוד שהודר בג'אווה, הוא גם בינארי. זהו bytecode - קוד (לא טקסטואלי הפעם, אפשר להפוך אותו לטקסטואלי באמצעות javap) אבסטרקטי שעדיין לא תורגם לקוד מכונה.
עריכה:
ציטוט מובחר:
קוד: | compiled applications (object files) are sometimes referred to as binaries. But binary files can also be image files, sound files, compressed versions of other files (of either type), etc. — in short, any file content whatsoever. Many binary file formats contain parts that are plain text. |
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 01:32
נושא ההודעה:
|
ונסכם:
לא כל executable הוא binary
לא כל binary הוא executable
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 01:57
נושא ההודעה:
|
אבל כשמדובר בקבצים בינארים בC (סתם עלה לי עכשיו בראש) הם כן קריאים, ולאו דווקא בשפת מכונה,
לפי מה שהבנתי, exe הוא קובץ שניתן להריץ אותו, כלומר יש לו headers של elf ? וקובץ שהוא בינארי לאו דווקא יש לו headers של elf ?
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 07:31
נושא ההודעה:
|
exe הוא קובץ שניתן להרצה (אם יקבל את ההרשאות המתאימות). יש כל מיני שיטות. הקרנל תומך ב-ELF כאחת מהן (יש עוד, אבל לא נפוצות אם אני זוכר נכון). כמו כן, ניתן להריץ דרך shell, perl וכו'.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 11:58
נושא ההודעה:
|
nadavvin : | קובץ executable הוא קובץ בר הרצה כלומר כל קובץ שיש בו הוראות להפעיל תוכנית מסוימת.
בהגדרה זאת כלולים גם סקריפטים.
קובץ בינארי הוא קובץ שמכיל פקודות מכונה=אסמבלי שעובד עם פקודות המעבד ומבוקר ע"י מערכת ההפעלה.
בהגדרה זאת לא כלולים תוכניות שנעשו בגא'ווה אלא אם הם קומפלו בעזרת javac. |
לא ממש הבנתי.
אני אנסה ותגידו לי אם יש היגיון בדבריי:
קבצי executable שהם קבציי סקריפט, בעצם מפעילים כל מיני תוכנות אחרות שהן עצמן קומפלו למצב בינארי. אותם קבצים בינאריים מכילים פקודות מכונה.
למשל, סקריפט שמחליף את תמונת המסך בכל הפעלה חדשה של המחשב, בעצם קורא בכל הפעלה מחדש של המערכת לתוכנה בינארית שעושה זאת.
אני צודק ?
שאלה נוספת, האם קבצי סקריפט נחשבים כתוכנה ? או בגלל שהם רק קוראים לקבצים כאלו יש להם הגדרה שונה.
תודה.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 12:13
נושא ההודעה:
|
ציטוט: | אבל כשמדובר בקבצים בינארים בC (סתם עלה לי עכשיו בראש) הם כן קריאים, ולאו דווקא בשפת מכונה |
קובץ בינארי ב־C, אינו קריא.
הקוד המקור (שהוא טקסטואלי), לא ניתן להרצה, יש להדר אותו קודם כל ולבנות ממנו קוד בינארי שהוא ניתן להרצה (במקרה ורוצים לעשות זאת).
Victor: מה ש־nadavin רשם לא מדוייק. קובץ בר-הרצה, לא מריץ קובץ אחר בהכרח.
ציטוט: | קבצי executable שהם קבציי סקריפט |
זה לא נכון.
תסריטים (סקריפטים), הם ברי-ריצה, אך לא כל קובץ בר ריצה יהיה בהכרח תסריט.
בשביל לסכם את הבילבול שנוצר:
אפשר לחלק את הקבצים למחשב לשתי קבוצות: קבצים טקסטואליים וקבצים בינאריים.
ישנם קבצים (גם בינאריים וגם טקסטואליים) שניתן להריץ אותם, קרי ברי-ריצה (executable). ישנם קבצים שאי אפשר להריץ אותם והם משמשים לאגירת מידע (יכול להיות גם משהו אחר), כמו תמונות (יש גם טקסטואליים וגם בינאריים! SVG - טקסטואלי לעומת PNG שהוא בינארי), מסמכים וכו'.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 12:35
נושא ההודעה:
|
[quote="sijp"] ציטוט: |
בשביל לסכם את הבילבול שנוצר:
אפשר לחלק את הקבצים למחשב לשתי קבוצות: קבצים טקסטואליים וקבצים בינאריים.
ישנם קבצים (גם בינאריים וגם טקסטואליים) שניתן להריץ אותם, קרי ברי-ריצה (executable). ישנם קבצים שאי אפשר להריץ אותם והם משמשים לאגירת מידע (יכול להיות גם משהו אחר), כמו תמונות (יש גם טקסטואליים וגם בינאריים! SVG - טקסטואלי לעומת PNG שהוא בינארי), מסמכים וכו'. |
אוקיי.
יש לך דוגמא לקובץ סקריפט שלא קורא לתוכנות שקומפלו בינארית ?
כלומר, האם קיים קובץ סקריפט (נניח ב bash) שמריץ פקודות ישירות למעבד ולא קורא לתוכנות אחרות שעושות את הפעולה הזאת ?
תודה.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 12:41
נושא ההודעה:
|
הבעיה עם השאלה שלך היא שאני לא מבין בדיוק מה הקשר.
זה לא רלוונטי ממש לדיון. קובץ script עובר תהליך של אינטפרטציה (פיענוח), שלאחר מכן מתורגם לפקודות מכונה במקום (ולכן הם איטיים יותר).
למשל, כתוב תסריט קצר בפיית'ון. אם תריץ אותו מהמסוף, לא תצליח כי הוא בלי הרשאות ריצה. תוסיף לו הרשאות ריצה והוא יהיה בר-ריצה.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 12:53
נושא ההודעה:
|
sijp : | הבעיה עם השאלה שלך היא שאני לא מבין בדיוק מה הקשר.
|
זה כנראה בגלל שאני לא ממש מבין בתכנות.
אבל הצלחתי להבין (אני מקווה..), כי קבצי סקריפט במידה והם מקבלים הרשאת ריצה, הם עוברים תהליך פיענוח, שזה מעין קימפול live, ואז הם מפעילים פקודות.
אם תיארתי יחסית נכון, אזי האם הפקודות שניתנות להשמה בתוך קובץ סקריפט (bash, python וכד'), דומות לפקודות ששמים בקוד המקור של שפת תכנות עילית, נניח בשפת c.
כלומר, האם ניתן לרשום פקודות בקובץ סקריפט אשר קוראות ישירות לכרטיס הקול למשל, מבלי להידרש בהפעלת תוכנת ביניים אחרת (שנכתבה בשפת עילית וקומפלה) אחרת ?
מקווה שהצלחתי לשאול בצורה מובנת.
תודה.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 13:53
נושא ההודעה:
|
זה לא קשור, כי הדיון מדבר על ההבדל בין קובץ בר-ריצה לבין קובץ בינארי. שכאמור, לא בהכרח צריך להיות הבדל. יש קבצים בינאריים ויש קבצים טקסטואליים (שהם תת-קבוצה בעצם של הבינאריים). יש קבצים ברי-ריצה ויש כאלו שלא. קובץ יכול להיות בינארי ובר-ריצה, רק אחד מהם או אף לא אחד מהם.
לגבי השאלה השניה, לא שידוע לי.
המחשב מבין רק שני מצבים, 0 או 1 (מתח גבוה או מתח נמוך). כל פעם שהוא מבצע פעולה מסויימת הוא מקבל רצף של 32 בתים (תלוי בחומרה) (זה בעצם 32 קוי חשמל). קרי 32 של אפסים ואחדים. הוא יודע לחלק את הרצף הזה בצורה כזו שהוא יבין את הפקודה (נתעלם מהמימוש של זה).
לכן המעבד לא ידע ישירות לעבוד עם סקריפט, ויצטרך מפענך ש"יסביר לו".
בסופו של דבר, מחשב זה חיה די מטומטמת...
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 16:37
נושא ההודעה:
|
פשוט מאוד קובץ טקסטואלי הוא גם קובץ בינארי, פשוט זה מציין שאפשר לקרוא אותו (בנוי מתוי ascii פעם והיום יוניקוד).
הסיבה שסקריפטים הם קבצים טקסטואלים היא פשוטה: אנשים צריכים אפשרות לכתוב ולקרוא מהם.
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 17:18
נושא ההודעה:
|
אפשר להבין מה בדיוק המקור והמניע לכל הדיון המסורבל הזה?
|
|
חזרה לתוכן הדיון |
פורסם: 05/01/2006 - 18:39
נושא ההודעה:
|
כמו שליעד אמר כבר, חלס, נשבר הינה הגדרות:
קובץ בינארי: כל קובת שהוא לא טקסטואלי
קובץ טקסט: קובץ שכל התכולה שלו מכילה רק בתים שהערך שלהם הוא בין 32 ובין 126 עשרוני (וגם תווים 10 ו-13 חוקיים).
קובץ בר הרצה (על מערכות יוניקס): קובץ שבמערכת הקבצים שלו הסיבית של executable מופעלת.
אפשר לעשות קבצים בינארים ברי הרצה (תוכניות למשל: /bin/bash) אפשר לעשות קבצים בינארים לא ברי הרצה (למשל קבצי jpeg).
לעומת זאת אפשר לעשות קבצים טקטואלים ברי הרצה (למשל תסריטים: /usr/bin/startkde), וגם אפשר לעשות קבצים טקסטואלים לא ברי הרצה (למשל קבצי xpm.*).
יש עוד שאלות...?
(כן כן, בהגדרה של קבצי טקסט היא לא מדוייקת, כי בעצם כל קובץ שלא מכיל תווי בקרה הוא טקסטואלי, למשל קבצים המכילים עברית ב-utf8... אבל אם מתייחסים לקובץ בתור ascii אז הוא מכיל זבל, ולכן אני משתמש בהגדרה הפשוטה של קבוץ טקסטואלי)
אפשר לסגור את השירשור המיותר הזה....?
|
|
חזרה לתוכן הדיון |
|