• اگر سمپادی هستی همین الان عضو شو :

    ثبت نام عضویت

ایده اسمبلر CASM

  • شروع کننده موضوع شروع کننده موضوع ArmanBadpa
  • تاریخ شروع تاریخ شروع

ArmanBadpa

مجهز به ADHD
کنکوری 1406
ارسال‌ها
33
امتیاز
113
نام مرکز سمپاد
شهید بهشتی 2
شهر
نیویورک ، پایتخت استرالیا
سال فارغ التحصیلی
1406
مدال المپیاد
نیاوردم والا
سلام مجدد به همگی
احتمالا برخی از شما ها به یاد داشته باشید که من در حال طراحی یک کرنل و بوت لودر به نام CoreShell B&K بودم.
امروز یک ایده به ذهنم رسیدم که اون هم اسمبلر casm بود. این ایده من چیزی شبیه یک زبان برنامه نویسی هست ( ولی یک اسمبلره ) که با C# میخوام بنویسمش. یک محیط ادیتور با یک اسمبلر.
این اسمبلر ما یکسری دستورات رو از کاربر میگیره مثلا consoleo("hello world!") و یکسری دستورات اماده از اسمبلی رو درون خودش داره و مجموعه ای از دستورات که خروجی hello world! رو میدن به طور آماده در قالب یک فایل asm مینویسه. و این کار ها رو برای خیلی از دستورات دیگه میتونه انجام بده. اینطوری توسعه کرنل و بوت لودر CoreShell کمی ساده تر میشه و دیگه قرار نیست با سینتکس اسمبلی سر و کله بزنم. نظر شما چیه؟ این وقت تلف کردنه؟ یا نه کار جالبیه؟ یا بهتره با همون C و Rust بنویسمش؟
 
سلام مجدد به همگی
احتمالا برخی از شما ها به یاد داشته باشید که من در حال طراحی یک کرنل و بوت لودر به نام CoreShell B&K بودم.
امروز یک ایده به ذهنم رسیدم که اون هم اسمبلر casm بود. این ایده من چیزی شبیه یک زبان برنامه نویسی هست ( ولی یک اسمبلره ) که با C# میخوام بنویسمش. یک محیط ادیتور با یک اسمبلر.
این اسمبلر ما یکسری دستورات رو از کاربر میگیره مثلا consoleo("hello world!") و یکسری دستورات اماده از اسمبلی رو درون خودش داره و مجموعه ای از دستورات که خروجی hello world! رو میدن به طور آماده در قالب یک فایل asm مینویسه. و این کار ها رو برای خیلی از دستورات دیگه میتونه انجام بده. اینطوری توسعه کرنل و بوت لودر CoreShell کمی ساده تر میشه و دیگه قرار نیست با سینتکس اسمبلی سر و کله بزنم. نظر شما چیه؟ این وقت تلف کردنه؟ یا نه کار جالبیه؟ یا بهتره با همون C و Rust بنویسمش؟
بنظرم درحد ورودی خروجی و عملیات های ریاضی خیلی خوبه.
اما اگر بخوای با مفاهیم سطح پایین سر و کله بزنی خیلی سخت تر می‌شه‌، حتی سخت تر از اسمبلی
بنظرم با سی کد بزنی بهتره.
اگرم راست بلدی که چه بهتر
 
سلام مجدد به همگی
احتمالا برخی از شما ها به یاد داشته باشید که من در حال طراحی یک کرنل و بوت لودر به نام CoreShell B&K ب
امروز یک ایده به ذهنم رسیدم که اون هم اسمبلر casm بود. این ایده من چیزی شبیه یک زبان برنامه نویسی هست ( ولی یک اسمبلره ) که با C# میخوام بنویسمش. یک محیط ادیتور با یک اسمبلر.
این اسمبلر ما یکسری دستورات رو از کاربر میگیره مثلا consoleo("hello world!") و یکسری دستورات اماده از اسمبلی رو درون خودش داره و مجموعه ای از دستورات که خروجی hello world! رو میدن به طور آماده در قالب یک فایل asm مینویسه. و این کار ها رو برای خیلی از دستورات دیگه میتونه انجام بده. اینطوری توسعه کرنل و بوت لودر CoreShell کمی ساده تر میشه و دیگه قرار نیست با سینتکس اسمبلی سر و کله بزنم. نظر شما چیه؟ این وقت تلف کردنه؟ یا نه کار جالبیه؟ یا بهتره با همون C و Rust بنویسمش؟
درود بر تو


اگر منظورت رو درست فهمیده باشم تو قصد داری یه Transpiler یا Macro Assembler میخوای بنویسی یعنی یه سینتکس مثل زبون‌های سطح بالا میخوای بنویسی بعد تو مرحله پس پردازش به بلوک‌های اسمبلی تبدیلش کنی درسته؟ اگر آره این چند تا بحث مختلف توش هست

اولین بحث این هستش که آیا این پروژه فقط برای آموزش و جذابیته؟ اگر آره خیلی پروژه خوبی برای درک معماری کامپیوتر و نحوه کار Lexer و Parser و AST و تولید کد هستش
نوشتنش با C# هم خیلی منطقی و خفنه

بحث دومی که هست چالش‌های فنیش تو توسعه کرنل و بوت لودر و...ت هستش
اگر هدفت تکمیل کردن CoreShell هستش و میخوای از CASM به عنوان زبون اصلی استفاده کنی، تو ابعاد پیشرفته و سنگین پروژه یه اتلاف وقت و مانع خیلی بزرگ میشه به چند دلیل
۱. کابوس بزرگ دیباگ کردن، تو فرآیند توسعه سیستم‌عامل با ارورهای سطح سخت افزار مثل Triple Fault و مشکلات پگینگ و... مواجه میشی
وقتی کرنل کرش میکنه باید کد اسمبلی رو دیباگ کنی
پیدا کردن رد پای یه باگ تو کدی که با casm تولید شده و احتمال زیاد از چندین تا فایل .asm مختلف به هم چسبیده هستش، خیلی سخت‌تر و عجیب‌تر از دیباگ کردن C یا Rust هستش

۲. محدودیت تو مدیریت کردن حالت های پیچیده داری
سیستم عامل مدیریت Context Switching و Memory Allocation و... میخواد و نوشتن ماکروهایی که بهینه سازی کامپایلرهای مدرن رو نداشته باشن گلوگاه های شدید و Spaghetti code بوجود میاره که خیلی بده

۳. کامپایلرهای مدرن passهای بهینه‌سازی دارن که کدت رو برای معماری هدفت مثل ARM بهینه‌سازی میکنن ولی خب صرفا جایگذاری بلوک‌ها نمیتونه این نیازت رو برطرف کنه
 
بنظرم درحد ورودی خروجی و عملیات های ریاضی خیلی خوبه.
اما اگر بخوای با مفاهیم سطح پایین سر و کله بزنی خیلی سخت تر می‌شه‌، حتی سخت تر از اسمبلی
بنظرم با سی کد بزنی بهتره.
اگرم راست بلدی که چه بهتر
اها
بله اتفاقا تفسیر و تبدیل کد ها به اسمبلی و قرار دادنشون در یک فایل ASM خیلی سخت تر میشه از نوشتن خود اسمبلی
ولی خب به جز کرنل و بوت لودر من میتونن بقیه هم ازش استفاده کنن مثلا برای بوت لودر هم از زبان اسمبلی استفاده نکنن
ولی اره برای کرنل و بوت لودر خودم یکم زیادی سخت تر میشه
پس سعی میکنم این casm رو هم مدنظر داشته باشم در کنارش بسازمش اما این کرنل رو با C یا راست ادامه بدم. اینطوری خوبه؟ یا نه کلا نتیجه casm خانمان سوزانست؟ XD
 
  • دابل‌لایک
امتیازات: Mojo
درکل فقط به عنوان یه Side project با هدف یادگیری خیلی خوبه ولی برای استفاده تو همچین پروژه‌ای نه
 
درود بر تو


اگر منظورت رو درست فهمیده باشم تو قصد داری یه Transpiler یا Macro Assembler میخوای بنویسی یعنی یه سینتکس مثل زبون‌های سطح بالا میخوای بنویسی بعد تو مرحله پس پردازش به بلوک‌های اسمبلی تبدیلش کنی درسته؟ اگر آره این چند تا بحث مختلف توش هست

اولین بحث این هستش که آیا این پروژه فقط برای آموزش و جذابیته؟ اگر آره خیلی پروژه خوبی برای درک معماری کامپیوتر و نحوه کار Lexer و Parser و AST و تولید کد هستش
نوشتنش با C# هم خیلی منطقی و خفنه

بحث دومی که هست چالش‌های فنیش تو توسعه کرنل و بوت لودر و...ت هستش
اگر هدفت تکمیل کردن CoreShell هستش و میخوای از CASM به عنوان زبون اصلی استفاده کنی، تو ابعاد پیشرفته و سنگین پروژه یه اتلاف وقت و مانع خیلی بزرگ میشه به چند دلیل
۱. کابوس بزرگ دیباگ کردن، تو فرآیند توسعه سیستم‌عامل با ارورهای سطح سخت افزار مثل Triple Fault و مشکلات پگینگ و... مواجه میشی
وقتی کرنل کرش میکنه باید کد اسمبلی رو دیباگ کنی
پیدا کردن رد پای یه باگ تو کدی که با casm تولید شده و احتمال زیاد از چندین تا فایل .asm مختلف به هم چسبیده هستش، خیلی سخت‌تر و عجیب‌تر از دیباگ کردن C یا Rust هستش

۲. محدودیت تو مدیریت کردن حالت های پیچیده داری
سیستم عامل مدیریت Context Switching و Memory Allocation و... میخواد و نوشتن ماکروهایی که بهینه سازی کامپایلرهای مدرن رو نداشته باشن گلوگاه های شدید و Spaghetti code بوجود میاره که خیلی بده

۳. کامپایلرهای مدرن passهای بهینه‌سازی دارن که کدت رو برای معماری هدفت مثل ARM بهینه‌سازی میکنن ولی خب صرفا جایگذاری بلوک‌ها نمیتونه این نیازت رو برطرف کنه
پس میگی این یکم دیوونگیه نه؟
خب پس بهتره این casm رو به عنوان یک پروژه آموزشی نگاهش کنم نه یک ابزار توسعه coreShell نه؟
ولی از یک جهت casm خوبه برای CoreShell، چون اگر خوب پیاده سازی بشه اگر به جز من در آینده کسای دیگه هم بخوان روی پروژم کار کنن زیاد با سینتکس اسمبلی درگیر نمیشن
ولی خب برای اونا هم احتمالا C یا راست جذاب تر باشه تا casm نوپا
 
اها
بله اتفاقا تفسیر و تبدیل کد ها به اسمبلی و قرار دادنشون در یک فایل ASM خیلی سخت تر میشه از نوشتن خود اسمبلی
ولی خب به جز کرنل و بوت لودر من میتونن بقیه هم ازش استفاده کنن مثلا برای بوت لودر هم از زبان اسمبلی استفاده نکنن
ولی اره برای کرنل و بوت لودر خودم یکم زیادی سخت تر میشه
پس سعی میکنم این casm رو هم مدنظر داشته باشم در کنارش بسازمش اما این کرنل رو با C یا راست ادامه بدم. اینطوری خوبه؟ یا نه کلا نتیجه casm خانمان سوزانست؟ XD
والا اگه با یه تیم حرفه ای و با هدف تجاری باشه که روش کار بکنیم به چیز خوبی در میاد ولی خودت دست تنهایی نمی‌تونی
بنظرم کرنل رو با سی ادامه بده
نیازی به راست نیست، هروقت خواستی میتونی اضافه کنی به کرنل‌ت راست رو ولی موقعی که بشه اضافه کرد.
اگه دیر اضافه کنی اصلا کرنل خراب میشه
 
والا اگه با یه تیم حرفه ای و با هدف تجاری باشه که روش کار بکنیم به چیز خوبی در میاد ولی خودت دست تنهایی نمی‌تونی
بنظرم کرنل رو با سی ادامه بده
نیازی به راست نیست، هروقت خواستی میتونی اضافه کنی به کرنل‌ت راست رو ولی موقعی که بشه اضافه کرد.
اگه دیر اضافه کنی اصلا کرنل خراب میشه
خب به نظرم casm ایده خوبیه اما به قول شما یکم برای یک نفر سخته. یکم که چه عرض کنم باید از الان دنبال کلاس های اسمبلی برای نوه هام باشم تا اونا ادامش بدن 😂
بابت نظرتون ممنونم
 
آخرین ویرایش:
خب به نظرم casm ایده خوبیه اما به قول شما یکم برای یک نفر سخته. یکم که چه عرض کنم باید از الان دنبال کلاس های اسمبلی برای نوه هام باشم تا اونا ادامش بدن 😂
بابت نظرتون ممنونم
ناراحت نشو من فقط روراست بودم.
چونکه اگه انجام بدی شاید نتیجه مد نظرت رو نده و کلی از وقتت هم حروم میشه.
ولی میتونی کم کم و خیلی ارام روش کار کنی و توی گیت هاب بذاری. خیلی ها هستن عاشق این کارا فقط منتظرن یه چیزی پیدا کنن.

درکل اگه ناراحت شدی ببخش منو. منم یذره تند رفتم.
 
ناراحت نشو من فقط روراست بودم.
چونکه اگه انجام بدی شاید نتیجه مد نظرت رو نده و کلی از وقتت هم حروم میشه.
ولی میتونی کم کم و خیلی ارام روش کار کنی و توی گیت هاب بذاری. خیلی ها هستن عاشق این کارا فقط منتظرن یه چیزی پیدا کنن.

درکل اگه ناراحت شدی ببخش منو. منم یذره تند رفتم.
نه اصلا اتفاقا خوشحال هم شدم واقعا نظر ارزشمندی بود
بله من هم مدنظر دارم همینکارو انجام بدم یکم آروم پیش برم.
بازهم دستتون درد نکنه
 
  • دابل‌لایک
امتیازات: Mojo
Back
بالا