• מי אנחנו?

    שלום אורח/ת!

    שים לב - על מנת להשתתף בקהילה שלנו, להגיב ולפתוח דיונים חדשים, עליך להצטרף כחבר רשום.

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

ארכיון

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

ImFondOfComputers

לימוד Assembly

17 תגובות בדיון זה

היי,

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

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

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

תודה :xyxthumbs:

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

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

לגבי סוגי העבודה שבהם נדרשת עדיין עבודה ברמות שכאלו, זה בד"כ כשכותבים קוד בשפה עילית ואז מגלים שחלק ממנו (החלקים החמים) רצים באופן ניכר איטי יותר בגלל שהקומפיילר לא עושה עבודה טובה (אופטימיזציה גרועה / אי-שימוש נכון במשאבים כמו SIMD) ואז עם ידע ב ASM אפשר לשנות את הקוד ו/או להחליף אותו בקוד ASM.

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

http://www.virtualdub.org/blog/pivot/entry.php?id=236#body

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

אבל שוב, אין הכרח ללמוד את השפה הזו בשביל להיות מתכנת, בטח היום כשיש אנשים שלומדים ישר שפות כמו JAVA/.NET בלי להבין אפילו נושאים כמו איך הזיכרון מנוהל ומה זה בכלל פוינטרים.

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

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

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

תלוי במה אתה רוצה לעסוק..

כשפה ראשונה אין טעם ללמוד אסמבלי כי לבנות בה תוכנות פשוטות יקח הרבה מאוד זמן (דוגמא אמיתית: כתיבת תוכנה שקולטת שתי מחרוזות באורך המגובל ל 8 תווים או פחות בצורה הקסדצימלית [כלומר יש בדיקה האם לא הקלדת בטעות מספר לא חוקי כמו G] מחרוזת נוספת מאותה צורה, והמטרה היא לחפש את המחרוזת השלישית בין הכתובות שמיוצגות על ידי שתי המחרוזות הראשונות, תוכנה זה נכתבה בכ 40-60דקות ולקחה כ 300-400 שורות קוד, כאשר בשפות כגון C ניתן להגיעה לזה בהרבה יותר מהר).

לעומת זאת אסמבלי לא מתה ויש תחומים שבהם עוסקים הרבה מאוד באסמבלי, אחד מהם התחום שאני מאוד מתעניין זה תחום מערכות ההפעלה, כתיבת BOOT LOADER מתבצע 100% באסמבלי ואין שפה אחרת שניתן לעשות זאת, שליחת פקודות ל CONTROLLERS מסויימים מתבצעת אך ורק באסמבלי, מעבר בין מצבים שונים במעבד (הפעלת מנגון ה PROTECTED MODE, הפעלת PAGING, קבלת כתובת של PAGE FAULT, MULTITASKING בסופו של דבר) כל זה נעשה באסמבלי.

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

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

אסמבלי ממש לא השפה הראשונה שלי, יש לי ותק של שלוש שנים בc,c++ ושנה בc# , בכל מקרה אני חושב לפי מה ששניכם אמרתם שזה נורא משתלם ללמוד אסמבלי. לגבי אבטחת מידע, יש איזשהו קשר?

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

יש הרבה מערכות הפעלה (אומנם לא לשימוש ביתי) שלא רק שלא כתובות באסמבלר (חלקם בכלל לא) אלא כל-כולם כתובות בשפות כמו C# כמו למשל:

http://www.sharpos.org/doku.php

שאפילו כתבו קומפיילר מיוחד רק בשביל שלא יצטרכו לכתוב קוד אסמבלר לתחילת ההפעלה של מערכת ההפעלה (ויש פרוייקטים קצת יותר סולידים כמו Singularity של שמכיל חלקים קטנים של C ואסמבלר).

לגבי אבטחת מידע ? זה טוב בשביל הבנת קונספטים שציינתי וגם כמובן עם יכולת מסוימת של reverse engineering אפשר למצוא עם זה כל מני פרצות בתוכנות / מנגנוני הגנה (אבל זה דורש לטעמי הרבה יותר מללמוד את השפה).

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

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

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

יש הרבה מערכות הפעלה (אומנם לא לשימוש ביתי) שלא רק שלא כתובות באסמבלר (חלקם בכלל לא) אלא כל-כולם כתובות בשפות כמו C# כמו למשל:

http://www.sharpos.org/doku.php

שאפילו כתבו קומפיילר מיוחד רק בשביל שלא יצטרכו לכתוב קוד אסמבלר לתחילת ההפעלה של מערכת ההפעלה (ויש פרוייקטים קצת יותר סולידים כמו Singularity של שמכיל חלקים קטנים של C ואסמבלר).

לגבי אבטחת מידע ? זה טוב בשביל הבנת קונספטים שציינתי וגם כמובן עם יכולת מסוימת של reverse engineering אפשר למצוא עם זה כל מני פרצות בתוכנות / מנגנוני הגנה (אבל זה דורש לטעמי הרבה יותר ללמוד את השפה).

שמעתי על SINGULARITY, אבל תעשה לי טובה: בשפת C#? נו באמת.. זה לא יותר מ "research project" ויקח לזה דיי הרבה זמן עד שזה יגיעה לשולחן הביתי (למרות שאפילו היום המחשבים מספיק חזקים להריץ את זה).

שאפילו כתבו קומפיילר מיוחד רק בשביל שלא יצטרכו לכתוב קוד אסמבלר לתחילת ההפעלה של מערכת ההפעלה

אני דיי בטוח שהקומפיילר הזה הופך את ה"קוד" שלהם לקוד אסמבלי בסופו של דבר.

אבל אין טעם להיתווכח בנושא הזה.

בכל מקרה העלת פה נקודה אחרת שמשתמשים באסמבלי זו היא ה reverse engineering.

אלא אם כן חשובה המהירות ריצה של התוכנה הנבנית ואבטחתה. אני צודק?

עכשיו אתה צודק

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים

שמעתי על SINGULARITY, אבל תעשה לי טובה: בשפת C#? נו באמת.. זה לא יותר מ "research project" ויקח לזה דיי הרבה זמן עד שזה יגיעה לשולחן הביתי (למרות שאפילו היום המחשבים מספיק חזקים להריץ את זה).אני דיי בטוח שהקומפיילר הזה הופך את ה"קוד" שלהם לקוד אסמבלי בסופו של דבר.

אבל אין טעם להיתווכח בנושא הזה.

בכל מקרה העלת פה נקודה אחרת שמשתמשים באסמבלי זו היא ה reverse engineering.

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

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

אבל כן, זה מחקרי ונחמד, ולא יותר מזה :)

0

שתף דיון


קישור ישיר להודעה
שתף באתרים אחרים