نمایش نتایج 1 تا 6 از 6

نام تاپیک: سوال

  1. #1

    Question سوال

    سلام
    چنتا سوال در خصوص اسمبلی دارم.
    چطور میشه فایل های ترجمه شده توسط اسمبلر را مشاهده کرد مثل فایل obj ؟ میخوام کد ماشین برنامه رو ببینم.
    برای تبدیل فایل obj به برنامه exe توسط لینکر نیاز به فایل های دیگه داره که توسط اسمبلر تولید شده مثل lst ؟
    ایا میشه برنامه ای را تحت بیوس اجرا کرد بدون نیاز به سیستم عامل مثل داس و ویندوز ؟ یعنی کامپیوتر روشن میشه به جای سیستم عامل برنامه بالا بیاد مثل سیستم عامل.
    من تو تمام اموزش ها که دیدم به طور پیشفرض برای کاراکترها از اسکی داره استفاده میشه. ایا میشه از یونیکد استفاده کرد تو اسمبلی، اسمبلی که تحت بیوس بالا میاد نه ویندوز و داس؟
    من جایی خوندم که برنامه با دو فرمت com و exe میشه تولید کرد. تفاوت این دو چیه؟

  2. #2

    نقل قول: سوال

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    سلام
    چنتا سوال در خصوص اسمبلی دارم.
    چطور میشه فایل های ترجمه شده توسط اسمبلر را مشاهده کرد مثل فایل obj ؟ میخوام کد ماشین برنامه رو ببینم.
    در حالت کلی با استفاده از ابزار هایی مثل IDA Pro و W32Dasm که Disassembler های تخصصی هستند و کارشون همینه.
    اما برای فایل های obj می توانید از ابزار های ساده تری مثل OBJ2ASM هم استفاده کنید.

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    برای تبدیل فایل obj به برنامه exe توسط لینکر نیاز به فایل های دیگه داره که توسط اسمبلر تولید شده مثل lst ؟
    خیر.

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    ایا میشه برنامه ای را تحت بیوس اجرا کرد بدون نیاز به سیستم عامل مثل داس و ویندوز ؟ یعنی کامپیوتر روشن میشه به جای سیستم عامل برنامه بالا بیاد مثل سیستم عامل.
    بله. ولی اولا باید مدل حافظه اش Tiny باشه، یعنی خروجی فایل های کوچک و ساده COM، نه EXE. چون دیگه سیستم عاملی وجود نداره که فایل EXE رو تفسیر کنه.
    ثانیا داخلش فقط می توانید از وقفه های BIOS استفاده کنید، از وقفه های DOS نمی توانید استفاده کنید چون موقعی که کد شما اجرا میشه وجود ندارند.
    ثالثا فایل، فولدر، پارتیشن و ... برای برنامه شما معنی نداره و اگر با دیسک کاری می کنید خودتون باید در کدتون سکتور به سکتور داده بخونید.

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    من تو تمام اموزش ها که دیدم به طور پیشفرض برای کاراکترها از اسکی داره استفاده میشه. ایا میشه از یونیکد استفاده کرد تو اسمبلی
    بله، اما برای کد اسمبلی که قراره با استفاده از توابع ویندوز کار کنه، نه MS-DOS. مگر اینکه کتابخانه تخصصی ای برای نمایش متن Unicode در DOS باشه که ازش استفاده کرده باشید.
    مشکل این نیست که نتوانید در کدتون رشته Unicode داشته باشید، مساله اینجا است که برای تایپ یا نمایش رشته های Unicode تون باید سرویس مناسب Unicode ای باشه که در BIOS و MS-DOS نیست. اگر برای ویندوز کد اسمبلی می نویسید و از فراخوانی توابع API ویندوز کمک می گیرید، بله، می توانید از Unicode استفاده کنید.
    اما چون اغلب کد های اسمبلی که می بینید برای MS-DOS و بر اساس وقفه های BIOS و MS-DOS طراحی شده اند، طبعا نمی توانند با رشته های Unicode کاری انجام بدهند.

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    من جایی خوندم که برنامه با دو فرمت com و exe میشه تولید کرد. تفاوت این دو چیه؟
    فایل های COM که خیلی ساده هستند، یک مدل حافظه Tiny دارند که کد و داده هر دو کنار هم در یک سگمنت قرار میگیره و فراتر از اون سگمنت نمیره که برای برنامه های خیلی کوچیک و کم حجم مناسب ئه. فایل های COM پردازش خاصی لازم ندارند، آدرس های داخل فایل همونطور که نوشته شدن در حافظه قرار می گیرند و دستکاری خاصی لازم ندارند.

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

  3. #3

    نقل قول: سوال

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

    یه سوال دیگه من هرچی اموزش از اسمبلی دیدم هیچ اشاره ای از هسته های سی پی یو نمیکنه. اینکه مثلا سی پی یو چند هسته ای میتونه همزمان به تعداد هسته هاش به صورت همزمان و موازی اطلاعات را پردازش کنه. ایا در این خصوص مطلب اموزشی هست که معرفی کنید ؟
    باتشکر
    آخرین ویرایش به وسیله PEYMAN002 : جمعه 02 آبان 1399 در 16:29 عصر

  4. #4

    نقل قول: سوال

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

    نقل قول نوشته شده توسط PEYMAN002 مشاهده تاپیک
    یه سوال دیگه من هرچی اموزش از اسمبلی دیدم هیچ اشاره ای از هسته های سی پی یو نمیکنه. اینکه مثلا سی پی یو چند هسته ای میتونه همزمان به تعداد هسته هاش به صورت همزمان و موازی اطلاعات را پردازش کنه. ایا در این خصوص مطلب اموزشی هست که معرفی کنید ؟
    باتشکر
    معمولا برنامه شما تحت یک سیستم عامل مثل ویندوز اجرا میشه و پردازنده منبعی است که متعلق به اون سیستم عامل ئه. برنامه ها نباید و نمی توانند خودشون مستقیما با پردازنده و سایر منابعی که مالک شون سیستم عامل هست کار کنند. برای اینکه از پردازنده چند هسته ای استفاده بیشتری بکنید با توابع API سیستم عامل پروسه (Process) و نخ (Thread) میسازید و سیستم عامل طبق زمان بندی خودش بخشی از وقت هسته های پردازنده رو برای اجرای اونها اختصاص میده.

    بعید میدونم بخواهید همچین کاری انجام بدهید اما اگر بخواهید در محیطی که سیستم عامل و محدودیت هاش وجود نداره با پردازنده کار کنید، مثلا بخواهید خودتون یک سیستم عامل طراحی کنید، هم مستندات فنی پردازنده ها بدردتون میخوره و هم مستندات اسمبلی که "چند هسته ای" هم جزو مطالبشون باشه :
    https://www.codeproject.com/Articles...embly-Manual-3

  5. #5

    نقل قول: سوال

    من که در توانم نیست همچین کاری کنم که بخوام سیستم عامل درست کنم . من به برنامه نویسی علاقه دارم دیدم اسمبلی حس خوبی بهش دارم نسبت به c . ولی اون جوری که میگین حتی خود حرفه ای ترین برنامه حتی همین ویندوز هم نمیتونه از تمام ظرفیت cpu و سخت افزار استفاده کنه. شما مطالب اموزشی اسمبلی رو ببینین همش درباره نقل و انتقالات تو cpu صحبت میشه ولی در عمل نمیشه از ظرفیت کامل سخت افزار استفاده کرد.
    من یه مطلبی خوندم که دلیل عدم تولید cpu ۱۲۸ بیت همین عدم استفاده و کارایی اون در حال حاضر بود. ولی انصافا برنامه نویسی چیز شاخیه. اینده یعنی برنامه نویسی. پول تو برنامه نویسیه.
    از راهنماییتون ممنون و تشکر

  6. #6

    نقل قول: سوال

    ولی اون جوری که میگین حتی خود حرفه ای ترین برنامه حتی همین ویندوز هم نمیتونه از تمام ظرفیت cpu و سخت افزار استفاده کنه.
    که همچنین حرفی زده؟ اصلا مسئله توان استفاده ویندوز از تمام ظرفیت پردازشگر نیست، مسئله اصلی زمان اجرا و سرعت پردازش و خیلی از موارد سطح پایین هست که باید توسط سیستم عامل کنترل شود که یک بحث خیلی فنی و پیچیده ای هست.
    و در ضمن عدم تولید پردازشگرهای 128 بیتی اول به علت sram هایی که در پردازشگر باید اضافه کنند که قیمت تمام شده به شدت زیاد میشه دوم هم به خاطر اور کلاک شدن پردازشگر هست که باعث گرمای شدید میشه برای همین سازندگان پردازشگر را با چالش های زیادی رو به رو کرده
    سوما همین الان هم پردازشگرهای جدید رجیسترهای 512 بیتی هم دارند ولی اگر منظورتون از 128 بیت نحوه آدرس دهی هست بله آدرس دهی های همین پردازشگرها همچنان 64 بیتی هست و البته وقتی تکنولوژی های جدید ایجاد شده اند که می توان از سیستم های توزیعی و کلاستر شده استفاده کرد خیلی مقرون به صرفه نیست که پردازشگرها را با هزینه های بیشتری تولید کنند
    در ضمن فناوری کوانتوم ها پا به عرصه ظهور گذاشتند، به طوریکه تا 5-10 سال آینده تقریبا پردازشگرهای باینری برای استفاده های تجاری بزرگ منسوخ خواهند شد

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: دوشنبه 27 اردیبهشت 1395, 11:33 صبح
  2. حرفه ای: دانلود سورس تابلوی تبلیغاتی Led و سورس office 2007
    نوشته شده توسط farboodj1375 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: شنبه 28 خرداد 1390, 11:12 صبح
  3. پاسخ: 9
    آخرین پست: یک شنبه 01 خرداد 1390, 19:11 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •