למידת אסמבלי- מאיפה להתחיל?
-
אמנם @yossiz לא רצה להמליץ לך על nand2tetris, אבל אם אסמבלי מרתק אותך, יש סיכוי טוב שזה יהיה עוד יותר מרתק (זה בעצם שלב אחד לפני שפת מכונה - זה יצירת החומרה שאח"כ המכונה יכולה לתרגם לפעולות, כמובן שאם אתה יודע איך החומרה עובדת אז כל מה שנשאר בשביל להבין אסמבלי זה רק הסינטקס)
גם יכול להיות שבתור אפיק פרנסה זה יהיה יותר ריווחי, כי יהיה יותר קשה להחליף את המתכנתים של האמבדד והמתכנתי חומרה ב-AI.
אם המטרה היא רק בשביל להיות מסוגל לעשות רוורסינג, אז AI כבר עכשיו יעשה את זה פי 100 יותר טוב, ויש עוד הרבה כלים שנועדו לזה לא צריך עבורם בכלל ידע באסמבלי.
עוד נקודה שאולי חשוב שתדע - אסמבלי זאת שפה שמתרגמת ישירות לפעולות מעבד, לכל מעבד יש שפת אסמבלי שונה, רק שיש "סטנדרט" למשפחות מעבדים שאפשר להשתמש בו גם בין מעבדים מאותה משפחה.אתה נראה נעול על אסמבלי, אבל השאלה מה נועל אותך לשם, בתקווה שזה לא מידע כוזב. (אני מסכים שזה מאוד כיף, אבל זה נראה שאתה מחפש לעשות עם זה משהו מעבר ללמוד את זה, שזה כמעט בטוח לא שווה)
-
ערב טוב לכולם.
ב"ה אני מעונין להתחיל ללמוד את שפת אסמבלי.
אין לי רקע בשום שפת תכנות כלשהי מלבד מושגים בסיסים.
אני מעונין באסמבלי בלבד, לא שפות עילית למיניהם.
לפחות בשלב זה,מעניין אותי איך המחשב עובד מתחת למכסה המנוע.
אשמח לדעת כמה דברים.
א.סביבת עבודה מומלצת?
ב.תחביר, מה מומלץ מבין השניים?
ג.ספר לימוד/סרטונים? מהיכן אתה למדתם?
4.כמה זמן יקח לי להגיע לרמה טובה של הנדסה לאחור?
5.האם לדעתכם אסמבלי תהיה רלוונטית בשנים הבאות
או שתהיה רלוונטית לתחומי הHFT בלבד ? הAI משתלט
על הרבה מאוד תחומים בכל נושא התכנות ודומיו
ואני לא בטוח לגבי הרלוונטיות של שפה זו.תודה לעונים.
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
א.סביבת עבודה מומלצת?
ווינדוס עם notepad++ יכול להיות מעולה
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
ב.תחביר, מה מומלץ מבין השניים?
תחביר intel עם אסמבלר fasm
ככה אני שיחקתי ולמדתי די הרבה זמן ועבד לי טוב ונוח
שים לב שלכל אסמבלר יש פיצ׳רים וסינטקס משלו אז אם אתה לומד להכיר אסמבלר מסויים כנראה שיהיה לך נוח להשאר איתו בעתיד אז אולי תעשה על זה מחקר קטן בהתאם לאיפה שליבך נוטה יותר (nasm יותר מוכר ופופולרי אבל אני חושב ש fasm נוח יותר ממנו (לא צריך לינקר חיצוני בנוסף))@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
ג.ספר לימוד/סרטונים? מהיכן אתה למדתם?
כל אחד יהנה יותר מפורמט לימוד אחר אבל אם אתה בעניין - הרבה RE וכתיבה ושואלים AI כשצריך
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
4.כמה זמן יקח לי להגיע לרמה טובה של הנדסה לאחור?
תלוי ביכולות שלך ובמה בדיוק אתה רוצה להנדס לאחור (יש הבדל גדול מאוד בין קוד שנכתב ב C לקוד שנכתב ב rust ועוד יותר קוד שנכתב ב dart לדוגמה)
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
5.האם לדעתכם אסמבלי תהיה רלוונטית בשנים הבאות
אין פה חוזי עתידות מקצועיים אבל אם אתה אוסף שנקלים זאת דעתי
אם הבינה המלאכותית תתקדם ותהפוך למשהו אחר מזה שאנחנו מכירים היום - כנראה מפתחים באסמבלי לא יהיו רלוונטיים בטווח הזמן הבינוני
אם לא - המצב ישאר כנראה סטטי כמו היום עם הצמדה חלקית למצב המתכנתים הכללי בעולם שבו שוק התוכנה לא גדל (קצת מורכב אבל מקווה שהובנתי)רק שים לב שאם אתה מתכנן לעבוד בזה אתה תצטרך ללמוד הרבה יותר מאסמבלי (לדוגמה אם תצא מהתחום הצר יחסית של אסמבלי שרץ על מחשבים שולחניים תצטרך ללמוד לקרוא datasheets להבין קצת אלקטרוניקה ארכיטקטורות זיכרון ומעבדים וכו׳ וכו׳) אבל אסמבלי יהיה נקודת פתיחה טובה (עדיף כמובן שתתחיל מקצת C כמו שכתבו כאן)
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:בכ"מ מקרה אדם שיודע אסמבלי יכתוב קוד יעיל יותר ממי שלא יודע כי הוא יודע איך כל פעולה בשפת עילית
מתורגמת לפקודות שהמעבד מבין.לא צריך בשביל זה לדעת אסמבלי אלא מספיק להכיר כללים בסיסיים אלמנטריים גם בלי לתרגם את זה בראש ל cache miss וכו'
ורוב מה שאפשר לייעל שלא תלוי בסיבוך שנוצר בקוד של השפה העילית הקומפיילר יעשה יותר טוב@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
ג.לדעתך מי עושה רברסינג יותר טוב אדם או מכונה והאם זה ישתנה.
מכונה בלי ספק אבל בלי אדם שמכוון אותה היא עלולה להכנס לפינות נידחות או לפרש דברים מסויימים בצורה שגויה
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
אני מעונין גם בשביל לפרק בעתיד נוזקות למיניהם שרובם נכתבות בשפת מכונה
ניתחתי הרבה מאוד נוזקות ולא זכור לי שנתקלתי באחת שהייתה כתובה באסמבלי (לפעמים חלקים קטנים ממש ממנה)
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
הניידות זה הבעייה הגדולה קוד ל86 לא יתאים לARM..
מי שכותב באסמבלי לא מחפש ניידות בדרך כלל
לדעתי אל תבזבז הרבה זמן על למידה מסודרת במיוחד אם אתה קורא רק עברית אלא תלמד את הבסיס ממש ובחומרי לימוד תשתמש כחומרי העשרה
הסיבה מתחלקת לשתיים - אם מעניין אותך ללמוד אסמבלי אני מניח שיש לך רקע אוטודידקטי טוב אז הגיוני מאוד שלמידה דרך הידיים תתן לך יותר
הסיבה השניה היא שפשוט אין מה ללמוד כל כך מעבר לחומר קלאסי במדעי המחשב - הרעיון בתכנות אסמבלי שאין לך אבסטרקציה להרבה דברים אז אתה צריך לממש אותה בעצמך ואיך לממש זה כבר לא אסמבלי אלא הרעיון האלגוריתמי או דרישות השירות (בהכללה) שאיתו אתה מתממשקתתחיל מתוכנית קטנה וקלה שתקרא לכמה פונקציות מערכת (לדוגמה hello world עם message box) כדי ללמוד בצורה בסיסית איך מנהלים מחסנית ואיך קוראים לפונקציות ותתקדם לדברים מורכבים יותר
הרעיון הוא יותר לחשוב על אלגוריתם יעיל למימוש של משהו או חישוב של משהו ואז למצוא דרך לממש אותו באסמבלי - בדיוק כמו חידות leetcode בשפות עיליות רק שכאן חומרי הבניה שלך בסיסיים יותראני אתן לך כמה רעיונות שאני מימשתי ועזרו לי מאוד ללמוד ותוכל לפתח את זה למקומות שיעניינו אותך
הדגמה של חיזוי קפיצות - השתמשתי בחישוב של השערת קולץ בשתי צורות אלגוריתם שונות
מספר מחזורי השעון הממוצעים שנדרשים לכל משפחת פקודות לרוץ
חישוב של אורך ה pipe של המעבד עד לשלב ה redirect על ידי בדיקה של הזמן האבוד בחיזוי קפיצה שגוי (זה היה 17 מחזורי שעון כמדומני ב 5500U)
מימשתי את ניסוי ג׳ורג׳טאון (זה דרש לחפור במאמרים ישנים משנות החמישים ולחפש נתוני מילון ששרדו מאז בעשרות מאמרים נוספים)
וכמובן הרבה נסיונות של קמפול קוד C קצר בהגדרות אופטימיזציה שונות ובדיקה איך נראה קוד המכונה שיוצאאם מעניין אותך כמה פרוייקטים שפרסמתי בעבר
תוכנת hello world הכי קטנה שיכולה לרוץ על ווינדוס עדכני
מציג תמונה עצמאי שרץ מה boot
התחלת מחקר שעשיתי על נוזקה (לא מצאתי זמן לפרסם את כולו אז פרסמתי את החלקים המעניינים לדעתי) -
@חגי מה שנועל אותי זה רצון להבנה של איך המחשב עובד מתחת למכסה המנוע, הרברסינג,
בכללי זה בשביל לדעת אסמבלי אני גם מאוד אוהב את השפה הזאת, בכ"מ חושב שכן יהיה לזה שימושים בסייבר וכו
הניידות זה הבעייה הגדולה קוד ל86 לא יתאים לARM..@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
מה שנועל אותי זה רצון להבנה של איך המחשב עובד מתחת למכסה המנוע,
השאלה עד כמה אתה רוצה להבין, גם אסמבלי זה כבר שלב מתקדם יחסית בייצור של המחשב, אם אתה רוצה להתחיל מהבסיס אז יש ספר מוצלח בשם all about circuits שמלמד על חשמל ואלקטרוניקה, בכרכים היותר מתקדמים הוא מדבר על semi-conductors שזה בעצם הקונספט של טרנזיזטורים במעבדים, אח"כ אתה יכול להתחיל ללמוד nand2tetris ולנסות לבנות מעבד בסיסי בעצמך (לא ניסיתי, קראתי כתבה של מישהו שעשה את זה והתקבל לעבודה באינטל, אבל הוא לא השתמש בsemi-conductors בגלל שהוא לא עשה את זה מזערי והסתפק בטרנזיזטורים גדולים).
כמו כן היום הרבה RE נעשה ברמה גבוהה יותר.@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
בכללי זה בשביל לדעת אסמבלי אני גם מאוד אוהב את השפה הזאת
אתה לא יכול לדעת אם אתה אוהב אותה בלי שאתה יודע אותה טוב, תדע לך שהיא לא כזאת אטרקטיבית כמו שאתה חושב.
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
בכ"מ חושב שכן יהיה לזה שימושים בסייבר
גם כן, לא ברמה שאתה חושב.
אני לא מנסה לשכנע אותך בדווקא לא ללמוד אסמבלי, אני דווקא בעד, אבל אני חושש שאתה רוצה מהסיבות הלא נכונות או על סמך הנחות מוטעות.
עוד הערה בדרך אגב, שחקר נוזקות מתבסס הרבה על ידע היקפי רחב בנוסף לידע המעמיק בתחום מסוים, זה הזכיר לי משהו יפה שקראתי פעם שמסביר בצורה מאוד טובה מה קורא ברגע שמישהו מחפש בגוגל https://github.com/alex/what-happens-when זה מאוד מסביר איך דברים עובדים מאחורי הקלעים.
-
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
מה שנועל אותי זה רצון להבנה של איך המחשב עובד מתחת למכסה המנוע,
השאלה עד כמה אתה רוצה להבין, גם אסמבלי זה כבר שלב מתקדם יחסית בייצור של המחשב, אם אתה רוצה להתחיל מהבסיס אז יש ספר מוצלח בשם all about circuits שמלמד על חשמל ואלקטרוניקה, בכרכים היותר מתקדמים הוא מדבר על semi-conductors שזה בעצם הקונספט של טרנזיזטורים במעבדים, אח"כ אתה יכול להתחיל ללמוד nand2tetris ולנסות לבנות מעבד בסיסי בעצמך (לא ניסיתי, קראתי כתבה של מישהו שעשה את זה והתקבל לעבודה באינטל, אבל הוא לא השתמש בsemi-conductors בגלל שהוא לא עשה את זה מזערי והסתפק בטרנזיזטורים גדולים).
כמו כן היום הרבה RE נעשה ברמה גבוהה יותר.@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
בכללי זה בשביל לדעת אסמבלי אני גם מאוד אוהב את השפה הזאת
אתה לא יכול לדעת אם אתה אוהב אותה בלי שאתה יודע אותה טוב, תדע לך שהיא לא כזאת אטרקטיבית כמו שאתה חושב.
@שאלתיאל כתב בלמידת אסמבלי- מאיפה להתחיל?:
בכ"מ חושב שכן יהיה לזה שימושים בסייבר
גם כן, לא ברמה שאתה חושב.
אני לא מנסה לשכנע אותך בדווקא לא ללמוד אסמבלי, אני דווקא בעד, אבל אני חושש שאתה רוצה מהסיבות הלא נכונות או על סמך הנחות מוטעות.
עוד הערה בדרך אגב, שחקר נוזקות מתבסס הרבה על ידע היקפי רחב בנוסף לידע המעמיק בתחום מסוים, זה הזכיר לי משהו יפה שקראתי פעם שמסביר בצורה מאוד טובה מה קורא ברגע שמישהו מחפש בגוגל https://github.com/alex/what-happens-when זה מאוד מסביר איך דברים עובדים מאחורי הקלעים.
@חגי כתב בלמידת אסמבלי- מאיפה להתחיל?:
יש ספר מוצלח בשם all about circuits שמלמד על חשמל ואלקטרוניקה, בכרכים היותר מתקדמים הוא מדבר על semi-conductors שזה בעצם הקונספט של טרנזיזטורים במעבדים,
נדדתם רחוק... ואם כן אנדוד עמכם גם אני - יש ערוץ די מוכר ביוטיוב בשם branch education עם סרטונים ממש מעולים על נושאים כאלו ואני חושב שרובם פתוחים בנטפרי
@חגי כתב בלמידת אסמבלי- מאיפה להתחיל?:
תדע לך שהיא לא כזאת אטרקטיבית כמו שאתה חושב.
צודק אבל מנסיוני היא פותחת דלתות והשראה לעולמות מאוד מעניינים אחרים
באופן כללי אין עניין להוריד את ההתלהבות מסיבות קונקרטיות כי מי שמלא התלהבות וכשרון גם אם ימצא אסמבלי כלא שימושית או משעממת זה עדיין יעזור לו להתקדם מאוד
-
@חגי כתב בלמידת אסמבלי- מאיפה להתחיל?:
יש ספר מוצלח בשם all about circuits שמלמד על חשמל ואלקטרוניקה, בכרכים היותר מתקדמים הוא מדבר על semi-conductors שזה בעצם הקונספט של טרנזיזטורים במעבדים,
נדדתם רחוק... ואם כן אנדוד עמכם גם אני - יש ערוץ די מוכר ביוטיוב בשם branch education עם סרטונים ממש מעולים על נושאים כאלו ואני חושב שרובם פתוחים בנטפרי
@חגי כתב בלמידת אסמבלי- מאיפה להתחיל?:
תדע לך שהיא לא כזאת אטרקטיבית כמו שאתה חושב.
צודק אבל מנסיוני היא פותחת דלתות והשראה לעולמות מאוד מעניינים אחרים
באופן כללי אין עניין להוריד את ההתלהבות מסיבות קונקרטיות כי מי שמלא התלהבות וכשרון גם אם ימצא אסמבלי כלא שימושית או משעממת זה עדיין יעזור לו להתקדם מאוד
-