אסמבלי ...

question1

New member
אסמבלי ...

איזה סוג תוכניות כותבים באסמבלי..? והאם למתכנת בשפה זו יש עתיד?
 

selalerer

New member
היום כמעט ולא כותבים תוכניות ב

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

DuckFromHell

New member
לרובוטים כותבים תוכניות באסמבלי

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

shaiis7

New member
השימוש העיקרי של אסמבלי

בתוכנות הוא בפסיקות
 

זויברג

New member
דריברים למשל,

דריברים, כל מיני קבצי VXD במחשב למשל, נכתבים באסמבלי.
 

annefan

New member
מה פתאום?

דרייברים בלינוקס, סולאריס ו-windows נכתבים ב-C. (ב-WIN אפשר גם ב-++C, עם כלים מיוחדים). מה שכן, בקרנל של לינוקס (אני לא יודע לגבי אחרים) יש קטעי אסמבלר, אבל הם מאוד מאוד מצומצמים.
 

זויברג

New member
לא אמרתי שכל הדריברים באסמבלי,

אבל אני יודע שקבצי VXD, שהם קבצים בדרך כלל של דריברים וקבצי מערכת שונים, נכתבים באסמבלי
 

annefan

New member
אני לא מכיר VXD

אבל אני יודע שדרייברים לשלוש מערכות הפעלה לא חשובות במיוחד (windows, linux, solaris) נכתבים ב-C, בלי שורת אסמבלר.
 

זויברג

New member
משהו מצחיק כזה עם קבצי VXD,

אתה יכול לעבוד שנים עם מחשבים ולא לדעת מה זה קובצי VXD, אבל רק תנסה למחוק אחד, ואח"כ אתה תזכור מה זה, מניסיון... תראה הסבר שמצאתי, סתם לידע כללי:
Short for Virtual Device Driver, a VxD is a software file that that acts as buffer between a hardware device and software programs. This helps ensure that all software programs needing access to a hardware device do not conflict with each other What is a VxD? "VxD" stands for Virtual "something" Device, where 'x' stands for "something". Microsoft often names drivers according to this convention, thus "VKD" is the Virtual Keyboard Device, and "VPICD" is the Virtual Programmable Interrupt Device. VxDs are loaded into the protected operating system address space, and have full access to the system hardware. VxDs can modify page tables directly, install true hardware interrupt handlers, and generally wreak unrestricted havoc on the system. Of course, just because you *can* doesn,t suggest that you *should*. VxDs can be used to virtualize physical hardware by intercepting application requests to use the hardware and arbitrating between requests from different applications. In the more extreme case, VxDs can provide a "virtual" device that is not actually present at all, by emulating the behavior of a hardware device. VxDs, by virtue of their privileged access to the system, can also be used to implement software monitors, debuggers, and to modify the behavior of other software on the system. VxDs under Windows 95 are also used to implement many other components of the operating system, including the protected mode file system (IOS and IFS), the Virtual Communication Architecture (VCOMM), plug and play (Configuration Manager, etc.), and network transport and protocol drivers (NDIS).​
 

annefan

New member
לא לזה התכוונתי

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

DadleFish

New member
אסמבלי משמשת לשתי מטרות בלבד -

לימוד ואופטימיזציות.
 

vinney

Well-known member
גם לא אופטימיזציות

נראה אותך מנסה לעשות אופטימיזציה בפרוייקט גדול (יותר מ1000 שורות C יספיק לצורך העניין) באסמבלי יותר טוב מהקומפיילר. לימוד זה נכון. גם לכתיבת קומפיילרים (BACK-END) מן הסתם.
 

DadleFish

New member
את מה שאתה אומר

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

voguemaster

New member
בד"כ...

עושים אופטימיזציה לקטע קוד קצר וקריטי שדורש את זה במיוחד. זה הנחת היסוד היא שזה קטע קוד קצר וזה קטע קוד שאתה בקלות יכול להשתלט עליו. בכל מקרה יש עוד כמה טריקים שאין אפשרות לבצע בשפה עילית ואפשר *רק* באסמבלי. גם שימוש ברגיסטרים מיוחדים ופקודות ייעודיות להם (MMX ו-SSE( אפשר רק באסמבלי בגלל שזה לא חלק מהשפה בכלל ולכן אין לזה תמיכה בשום קומפיילר.
 

guznik

New member
זמן אמת

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

DadleFish

New member
אין סיבה

מערכות RT/E היום נכתבות ב-++C יפה מאוד. לא צריך אסמבלי לכל דבר, אלא רק לאופטימיזציות מאוד ספציפיות.
 

DNile

New member
את כל התוכנה?

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

guznik

New member
בכל זאת, F16

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

DadleFish

New member
אה ועוד משהו,

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

vinney

Well-known member
טוב, גם את זה אפשר לעשות בC בעקרון

 
למעלה