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

نام تاپیک: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

  1. #1

    کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

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

    و اینکه در استثنائی ترین موارد اگر برای نمونه بخواهید هسته لینوکس را توسعه بدید این زبان کاربردی در حد چند صفحه کد برای دستگاه های کاربرد داره و این حداکثر کاری هست که شاید از عهده زبانی مثل سی برنیاد.
    من باید تا دوشنبه یه مقاله حداقل 5 یا 6 صفحه ای تحویل بدم اگه لطف کنین و بهم کمک کنین ممنون می شم
    [/FONT]

  2. #2
    چه کارهایی می شه در اسمبلی انجام داد که توی زبانهای سطح بالا نمی شه؟
    قید کلمه "زبانهای سطح بالا" واژه ناقصیه.

    اسمبلی میتونه به رجیسترها، پورتها و... دسترسی داشته باشه، اما ویژوال بیسیک، ذاتا نمیتونه.
    پاسکال( و دلفی) و C ( و ویژوال سی) تقریبا" همه کارهایی که اسمبلی انجام میده رو میتونن انجام بدن. (مثل برنامه هایTSR، کار با وقفه، پورت، دسترسی به سکتور و ...)

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

    برنامه‌های نوشته‌شده به زبان اسمبلی نسبت به برنامه‌های معادل در زبانهای سطح بالا، حافظه کمتری را اشغال می‌کنند.
    به طور کلی حافظه رو میشه به دو نوع تقسیم کرد. حافظه RAM و حافظه دیسک سخت.

    *اگه به جای متغیر Byte متغیر Word رو استفاده کنی، خوب حافظه بیشتری استفاده کردی.اگه بی خودی اشاره گر بسازی و Free نکنی حافظه زیادی اشغال میکنه.(برخی از زبانهای سطخ بالا میتونن Garbage و Dangling Reference رو مدیریت کنن)

    * شما با یه دستور Div میتونی دو عدد رو تقسیم کنی. اما برای نوشتنش تو اسمبلی باید چند خط بنویسی؛ این کار میتونه حجم سورس کد رو تو اسمبلی افزایش بده.

    * میتونی چندین خط بیخودی بنویسی، متغیرتعریف کنی و استفاده نکنی یا یه شرط که همیشه برقراره...!
    اما از اونجایی که ممکنه یه کامپایلرت super compiler باشه با انتخاب بهینه فاکتورهای لازم شاید بتونه اینها رو تشخیص بده و کد خروجی رو کم حجم کنه. متاسفانه لینکر اسمبلی این قابلیتها رو نداره.

    * گاهی هم میشه که شما در اسمبلی چند خط کوتاه واسه نمایش Hello World بنویسید و حجم کد خروجی، چند کیلوبایت ناقابل بشه... اما اگه همین رو توی دلفی بنویسید ممکنه چندین Unit رو use کنه و کتابخانه هایی رو به همراه سورس کد شما کامپایل کنه که اینطوری، کد خروجی میتونی به چند ده کیلوبایت نزدیک بشه.
    برای فهم مطلب بالا، میتونی یه فایل exe تولیدی به زبان دلفی رو Disassemble کنی، تا ببینی واژه ها و آیکونهایی که ربطی به برنامه ات نداشته، به exe چسبیده ان.

    شاد باشی.

  3. #3
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    در چه زبان برنامه نویسی می توان DLL یک و نیم کیلو بایتی ساخت؟؟؟؟؟

    کدهای اسمبلی هم دارای سرعت بیشتر و هم مصرف کمتر حافظه هستند و دلیلش هم واضح است، هر چه برنامه سطح بالاتر شود دارای مدیرهای خودکار بیشتری میشود که همراه امکانات بسیار قدرتمندی که به همراه دارند حافظه نیز اشغال میکنند. مثلاَ همه زبان های سطح بالا دارای یک مدیر حافظه هستند که اسمبلی فاقد آن است.
    مثلاَ فریم ورک دارای مدیر قدرتمند "جمع آوری کننده حافظه هرز" است ( Garbage ) که شهرت زیادی هم دارد!


    ضمناَ تقریباَ یک کار را نمیشود با هیچ زبانی غیر از اسمبلی انجام داد!!
    با اسمبلی شما به راحتی میتوانیدهر تک خط سورس های برنامه را در زمان runtime عوض کنید، میدانم که عمق مطلب را متوجه نمیشوید!!

    مثلاَ من در خط 20 برنامه دستور Mov Ax,2 را نوشته ام، من به راحتی میتوانم در زمان واقعی runtime مثلاَ در کدی که در خط 10 اجرا میشود، کد خط 20 را به Mov Bx,5 تغییر دهم!!
    چه زبان دیگری میتواند کدهای خودش را در runtime خودش عوض کند؟
    به چی درد میخود؟؟؟؟؟؟؟؟؟؟؟ من چند سال قبلا با همین شیوه موفق به ساخت ویروسی جالب شدم!

    (البته دیگر ویروس را کنار گذاشته ام.)

    ولی در کل این هم مزیت حساب نمی شود، چون برای انجام کارها و الگوریتم های پیچیده نیاز به ساعت ها و روزها کد نویسی می باشد و خدا نکند که بخواهید قسمتی را تغییر دهید، روز از نو روزی از نو!!! (زبان های VB.Net و #C تقریباَ بسیار مناسب و قدرتمند هستند)

  4. #4

    ممنون

    سلام
    از جوابهای خوبتون تشکر می کنم
    لطفا اگر چیز دیگه ای به خاطرتون رسید برام بنویسید
    موفق باشید

  5. #5
    کاربر دائمی آواتار Bahram0110
    تاریخ عضویت
    آبان 1384
    محل زندگی
    شیراز | یاسوج | اهواز
    پست
    1,059
    نقل قول نوشته شده توسط Afshin_Zavar مشاهده تاپیک
    * شما با یه دستور Div میتونی دو عدد رو تقسیم کنی. اما برای نوشتنش تو اسمبلی باید چند خط بنویسی؛ این کار میتونه حجم سورس کد رو تو اسمبلی افزایش بده.
    ببخشید فضولی می کنم ولی
    این کار درسته حجم سورس کد رو بالا می بره ولی حجم فایل خروجی رو که بالا نمی بره! تازه کمتر هم شاید بشه

  6. #6
    نقل قول نوشته شده توسط Afshin_Zavar مشاهده تاپیک
    اما از اونجایی که ممکنه یه کامپایلرت super compiler باشه با انتخاب بهینه فاکتورهای لازم شاید بتونه اینها رو تشخیص بده و کد خروجی رو کم حجم کنه. متاسفانه لینکر اسمبلی این قابلیتها رو نداره.
    سلام افشین خان.
    در این مورد یه کم درباره gcc جستجو کنی یه چیزایی دست گیرت میشه.
    و اگر وقت کردی کتاب Professional assembly از wrox‌را بخونی ، خیلی بیشتر با این موضوع آشنا می شوید ولی هیچ وقت اسمبلی زبانی نیست که آدم بشینه باهاش یک window manager بنویسه و database programming بکنه. بیشترین کاربرداش در Realtime (kernel+ Device Driver) و قسمتی هم در استفاده از SSEx ها (منظورم Game Development) هست.

    ضمناَ تقریباَ یک کار را نمیشود با هیچ زبانی غیر از اسمبلی انجام داد!!
    با اسمبلی شما به راحتی میتوانیدهر تک خط سورس های برنامه را در زمان runtime عوض کنید، میدانم که عمق مطلب را متوجه نمیشوید!!

    مثلاَ من در خط 20 برنامه دستور Mov Ax,2 را نوشته ام، من به راحتی میتوانم در زمان واقعی runtime مثلاَ در کدی که در خط 10 اجرا میشود، کد خط 20 را به Mov Bx,5 تغییر دهم!!
    چه زبان دیگری میتواند کدهای خودش را در runtime خودش عوض کند؟
    به چی درد میخود؟؟؟؟؟؟؟؟؟؟؟ من چند سال قبلا با همین شیوه موفق به ساخت ویروسی جالب شدم!
    نمی دانم شما تحت چه سیستم عاملی کار کردید ولی فکر نمی کنم تحت ویندوز بوده چون در ویندوز به طور کلی برای دسترسی به Proccess Memory Area و مخصوصا آدرس های بالا شما چندین روش وجود داره که حتما نیازی به اسمبلی نداره.

    فرصتی کردید این را بخوانید

  7. #7
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    نقل قول نوشته شده توسط Best Programmer مشاهده تاپیک
    نمی دانم شما تحت چه سیستم عاملی کار کردید ولی فکر نمی کنم تحت ویندوز بوده چون در ویندوز به طور کلی برای دسترسی به Proccess Memory Area و مخصوصا آدرس های بالا شما چندین روش وجود داره که حتما نیازی به اسمبلی نداره.

    فرصتی کردید این را بخوانید
    سلام
    کسی با دسترسی به حافظه مشکل ندارد!
    حتی در VB8 هم به راحتی و بدون کمک از API میتوان حافظه را تغییر داد.
    ولی مسئله این است که مثلا من کدی در VB نوشته ام مثل i=5 آیا به همین را حتی ها میتوانم در زمان واقعی runtime آن را به a=7 تغییر دهم؟؟؟؟؟؟؟
    برای اینکار نیاز به کد نویسی بسیار و بدست آوردن نقطه دقیق و آدرس صحیح متغیر a دارم که در عمل اگر هم بشود آنقدر کد نویسی پبدا میکند که آدم را پشیمان میکند و تاژه امکان دارد در ورژن دیگری از مثلاَ VB درست کار کند و نقطه واقعی RAM را اشتباه محاسبه کند ولی در اسمبلی به راحتی و با تضمین بالایی انجام میگیرد!!!!!!!!!!!

  8. #8
    سلام
    می شه یه خواهشی داشته باشم
    در کنار بحثتون در مورد این جوابها یه چیز جدید بنویسید
    یعنی غیر از این چیزایی که مطرح شد هیچ کار دیگه ای نیست که اسمبلی انجام بده و زبانهای دیگه نتونن

  9. #9
    این کار درسته حجم سورس کد رو بالا می بره ولی حجم فایل خروجی رو که بالا نمی بره! تازه کمتر هم شاید بشه
    من هم نگفتم، حجم کد خروجی بیشتر میشه.
    ضمن اینکه سورس کد هم حافظه اشغال میکنه.

  10. #10
    اسمبلی میتونه به رجیسترها، پورتها و... دسترسی داشته باشه، اما ویژوال بیسیک، ذاتا نمیتونه.
    پاسکال( و دلفی) و C ( و ویژوال سی) تقریبا" همه کارهایی که اسمبلی انجام میده رو میتونن انجام بدن. (مثل برنامه هایTSR، کار با وقفه، پورت، دسترسی به سکتور و ...)
    - دسترسی به محتویات و وضعیت پردازنده ربطی به کامپایلر نداره .
    - دسترسی به سخت افزار دو حالت داره :
    غیر مستقیم و با استفاده از توابع سیستم عامل : همه زبانها ، کامپایلر و اسمبلر نقش ویژه ای ایفا نمیکنند .
    مستقیم : نیاز به کد سطح کرنل است ، که اگر زبانی لینکر مناسب داشته باشد میتواند چنین کدی تولید کند و باز هم خود کامپایلر و اسمبلر نقش تعیین کننده ای ندارند .

    در چه زبان برنامه نویسی می توان DLL یک و نیم کیلو بایتی ساخت؟؟؟؟؟
    با خیلی از زبانها ، با استفاده از تنظیمات مناسب و بسته به کاربرد مورد نظر .

    مثلاَ من در خط 20 برنامه دستور Mov Ax,2 را نوشته ام، من به راحتی میتوانم در زمان واقعی runtime مثلاَ در کدی که در خط 10 اجرا میشود، کد خط 20 را به Mov Bx,5 تغییر دهم!!
    چه زبان دیگری میتواند کدهای خودش را در runtime خودش عوض کند؟
    متامورفیسم ارتباطی به کامپایلر/اسمبلر ندارد . موتورهای متامورفیک متعددی با دلفی و سی نوشته شدن ، و البته اسمبلی .
    ولی مسئله این است که مثلا من کدی در VB نوشته ام مثل i=5 آیا به همین را حتی ها میتوانم در زمان واقعی runtime آن را به a=7 تغییر دهم؟؟؟؟؟؟؟
    قطعا . رجوع به توضیح قبلی .

    حتی در VB8 هم به راحتی و بدون کمک از API میتوان حافظه را تغییر داد
    زبانهائی که کد کرنل تولید نمیکنند ، من جمله دات نت و وی بی و دلفی و ... بدون توابع سیستم عامل ، به هیچ کدام از عناصر سخت افزاری ، من جمله حافظه ، دسترسی نخواهند داشت . تعامل با سخت افزار و سیستم عامل ، مسئله ای نیست که به زبان و کامپایلر بستگی داشته باشد . این مسئله به نحوهء تولید باینری و نوع دستورات بکار رفته در آن و نحوهء تعامل آن با سیستم عامل ، به عنوان کد User Mode یا کد Kernel Mode است . در تمامی مسائل مطرح شده ، نام بردن از یک زبان یا قیاس یک زبان با زبان دیگر بیهوده بود ، چون اصولا" این مسائل با زبان ارتباطی ندارند ؛

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

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



    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  11. #11
    سلام
    دسترسی به محتویات و وضعیت پردازنده ربطی به کامپایلر نداره .
    شاید از حرفهام اینطور استنباط شده ولی منظور من وجود برخی محدودیتها حین کار با زبانی مثل VB در مقابل زبانی مثل Delphi و C در برنامه های سیستمی بود. (مثل نوشتن کد اسمبلی در Delphi ؛ عدم وجود برخی DataType های لازم)
    و میخواستم بگم که در مورد جمله زیر
    اصولا" هیچ وظیفه ای وجود ندارد که تو بتوانی کدش را به اسمبلی بنویسی ، و نتوانی همان وظیفه را توسط کامپایلر دیگری پیاده سازی کنی
    بهتر بود استاد مربوطه ذکر کنه که کدوم زبان برنامه نویسی رو مد نظر داره.

  12. #12
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    نقل قول نوشته شده توسط Inprise مشاهده تاپیک
    با خیلی از زبانها ، با استفاده از تنظیمات مناسب و بسته به کاربرد مورد نظر .
    جالب است میشه شما یکی بسازید که یه کاری هم انجام بده؟ یکی هم من با اسمبلی میسازم!!!!!


    نقل قول نوشته شده توسط Inprise مشاهده تاپیک
    متامورفیسم ارتباطی به کامپایلر/اسمبلر ندارد . موتورهای متامورفیک متعددی با دلفی و سی نوشته شدن ، و البته اسمبلی .
    دل انگیز جان! اسمبلی نیاز به هیچ کدخاص و موتوری برای این کار ندارد، و به راحتی با چند خط کد نویسی عادی خودش این کار را انجام میدهد.

    نقل قول نوشته شده توسط Inprise مشاهده تاپیک
    زبانهائی که کد کرنل تولید نمیکنند ، من جمله دات نت و وی بی و دلفی و ... بدون توابع سیستم عامل ، به هیچ کدام از عناصر سخت افزاری ، من جمله حافظه ، دسترسی نخواهند داشت . تعامل با سخت افزار و سیستم عامل ، مسئله ای نیست که به زبان و کامپایلر بستگی داشته باشد . این مسئله به نحوهء تولید باینری و نوع دستورات بکار رفته در آن و نحوهء تعامل آن با سیستم عامل ، به عنوان کد User Mode یا کد Kernel Mode است . در تمامی مسائل مطرح شده ، نام بردن از یک زبان یا قیاس یک زبان با زبان دیگر بیهوده بود ، چون اصولا" این مسائل با زبان ارتباطی ندارند ؛
    منظورم را درست متوجه نشدید، منظورم آن بود که دسترسی به حافظه کار خفنی نیست و با VB.NET هم قابل انجام است (چون خیلی ها این را نمیدانند!)
    منظورم آن بود که در دات نت کلاسس هایی آماده با توابعی کامل و جالب وجود دارند که اجازه دسترسی راحت به حافظه را میدهند (و درست است که در زیر ساخت، خود این کلاسس ها از api های ویندوز استفاده میکنند ولی برنامه نویسی دات نت (مثلاَ vb ) دیگر خودش نیاز به رجوع به API را ندارد و این امکانات به راحتی در دسترش است.

    نقل قول نوشته شده توسط Inprise مشاهده تاپیک
    اصولا" هیچ وظیفه ای وجود ندارد که تو بتوانی کدش را به اسمبلی بنویسی ، و نتوانی همان وظیفه را توسط کامپایلر دیگری پیاده سازی کنی .
    من هم موافق هستم (قابل توجه دوست عزیز! کاربر azadeh2 )
    اگر بخواهیم از هر زبان آخرین نسخه آن را معیار قرار دهیم، میبینیم که ورژن های امروزی بسیار قدرتمند شده اند و تا حدودی بحث زبان سطح پایین و بالا را از بین برده اند و همه کار انجام میدهند. مثلاَ VisaulC++‎.Net2005 زبان سطح بالا است یا پایین، اگر سطج پایین است پس دسترسی به مخزن عظم فریم ورک و انجام کارهای سنگین با کدی ساده چه میشود؟؟؟

    البته موردی می توان تفاووت ها را بررسی کرد.
    مثلا در مقایسه اسمبلی با VB.Net و #C میتوان گفت اسمبلی توانایی تولید DLL دارای API استاندارد ویندوز را دارد. (لی همین توانایی در VC++‎.Net نیز وجود دارد و شاید در Delphi.Net نیز باشد. (چیزی از دلفی بلد نیستم))

    دوست عزیز آقای azadeh2 به شما پیشنهاد میکنم به جاری بررسی کلی، مقالتان را به بررسی و مقایسه امکانات اسمبلی با تک تک زبان ها به طور جداگانه اختصاص دهید.
    (اگر بخواهید اسمبلی را با تمام دنیای زبان های برنامه نویسی طرف کنید، بدون شک امکان منحصر به فردی را در اسمبلی پیدا نمیکنید!)

  13. #13
    H2 جان این جبهه گیریها تو یه تاپیک تخصصی چه معنی میده؟
    هرکس داره نظرش رو میده ؛نتیجه گیریها به عهده کسیه که داره مقاله می نویسه.

    دل انگیز جان! اسمبلی نیاز به هیچ کدخاص و موتوری برای این کار ندارد، و به راحتی با چند خط کد نویسی عادی خودش این کار را انجام میدهد.
    کسی هم نگفت که اسمبلی به موتور احتیاج داره. گفتیم: متامورفیسم به اسمبلی و دلفی و C وابستگی نداره.

    جالب است میشه شما یکی بسازید که یه کاری هم انجام بده؟ یکی هم من با اسمبلی میسازم
    مسابقه ای در بین نیست.
    هرزبانی امکاناتی داره که بعضی گزینه ها رو هنگام کامپایل حذف/اضافه کنه تا حجم کد خروجی کم و زیاد بشه( مثل Overflow checking, range checking و Optimization) و این بستگی به بهینه بودن سورس کد شما هم داره.

  14. #14
    salam
    merc az javabatoon
    badam in ke az name karbari man moshakhase ke agha nistam ghabele tavajohe aghaye h2

  15. #15
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    نقل قول نوشته شده توسط azadeh2 مشاهده تاپیک
    badam in ke az name karbari man moshakhase ke agha nistam ghabele tavajohe aghaye h2
    سلام
    من زیاد به نام کاربری توجه نمیکنم! اگر هم توجه کنم بازهم همه را تحت الفضی "آقا" میخوانم. شما به بزرگی خودتان ببخشید!

  16. #16
    با سلام. در پاسخ به سوال شما به صورت عملی دیده ام که این زبان به علت اینکه حجم کمتر در کارایی بیشتر و همچنین دسترسی به اطلاعات به صورت سریعتر می باشد انتهاب می‌شود و بنده در مقایسه با نرم افزارهایی نظیر C و . . . در کنترل هوش مصنوعی دیده ام که کارایی هایی با قدرت بالاتری از بقیه نرم افزارها دارد.
    بنده دیروز عضو این سایت شده ام و زیاد مسلط به سایت نمی باشم. اگر سوالی داشته باشید در خدمتتان هستم

  17. #17
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

    نقل قول نوشته شده توسط Developer Programmer مشاهده تاپیک
    قید کلمه "زبانهای سطح بالا" واژه ناقصیه.

    اسمبلی میتونه به رجیسترها، پورتها و... دسترسی داشته باشه، اما ویژوال بیسیک، ذاتا نمیتونه.
    پاسکال( و دلفی) و C ( و ویژوال سی) تقریبا" همه کارهایی که اسمبلی انجام میده رو میتونن انجام بدن. (مثل برنامه هایTSR، کار با وقفه، پورت، دسترسی به سکتور و ...)


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


    به طور کلی حافظه رو میشه به دو نوع تقسیم کرد. حافظه RAM و حافظه دیسک سخت.

    *اگه به جای متغیر Byte متغیر Word رو استفاده کنی، خوب حافظه بیشتری استفاده کردی.اگه بی خودی اشاره گر بسازی و Free نکنی حافظه زیادی اشغال میکنه.(برخی از زبانهای سطخ بالا میتونن Garbage و Dangling Reference رو مدیریت کنن)

    * شما با یه دستور Div میتونی دو عدد رو تقسیم کنی. اما برای نوشتنش تو اسمبلی باید چند خط بنویسی؛ این کار میتونه حجم سورس کد رو تو اسمبلی افزایش بده.

    * میتونی چندین خط بیخودی بنویسی، متغیرتعریف کنی و استفاده نکنی یا یه شرط که همیشه برقراره...!
    اما از اونجایی که ممکنه یه کامپایلرت super compiler باشه با انتخاب بهینه فاکتورهای لازم شاید بتونه اینها رو تشخیص بده و کد خروجی رو کم حجم کنه. متاسفانه لینکر اسمبلی این قابلیتها رو نداره.

    * گاهی هم میشه که شما در اسمبلی چند خط کوتاه واسه نمایش Hello World بنویسید و حجم کد خروجی، چند کیلوبایت ناقابل بشه... اما اگه همین رو توی دلفی بنویسید ممکنه چندین Unit رو use کنه و کتابخانه هایی رو به همراه سورس کد شما کامپایل کنه که اینطوری، کد خروجی میتونی به چند ده کیلوبایت نزدیک بشه.
    برای فهم مطلب بالا، میتونی یه فایل exe تولیدی به زبان دلفی رو Disassemble کنی، تا ببینی واژه ها و آیکونهایی که ربطی به برنامه ات نداشته، به exe چسبیده ان.

    شاد باشی.


    سلام:

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

    masm32 , Fasm , Rosasm

    اول در مورد اسمبلی تحقیق کن و باهاش برنامه های حرفه ای و بزرگ بنویس بعد حکم اعدامش رو صادر کن !!!!!

  18. #18
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

    نقل قول نوشته شده توسط __H2__ مشاهده تاپیک
    سلام
    در چه زبان برنامه نویسی می توان DLL یک و نیم کیلو بایتی ساخت؟؟؟؟؟

    کدهای اسمبلی هم دارای سرعت بیشتر و هم مصرف کمتر حافظه هستند و دلیلش هم واضح است، هر چه برنامه سطح بالاتر شود دارای مدیرهای خودکار بیشتری میشود که همراه امکانات بسیار قدرتمندی که به همراه دارند حافظه نیز اشغال میکنند. مثلاَ همه زبان های سطح بالا دارای یک مدیر حافظه هستند که اسمبلی فاقد آن است.
    مثلاَ فریم ورک دارای مدیر قدرتمند "جمع آوری کننده حافظه هرز" است ( Garbage ) که شهرت زیادی هم دارد!


    ضمناَ تقریباَ یک کار را نمیشود با هیچ زبانی غیر از اسمبلی انجام داد!!
    با اسمبلی شما به راحتی میتوانیدهر تک خط سورس های برنامه را در زمان runtime عوض کنید، میدانم که عمق مطلب را متوجه نمیشوید!!

    مثلاَ من در خط 20 برنامه دستور Mov Ax,2 را نوشته ام، من به راحتی میتوانم در زمان واقعی runtime مثلاَ در کدی که در خط 10 اجرا میشود، کد خط 20 را به Mov Bx,5 تغییر دهم!!
    چه زبان دیگری میتواند کدهای خودش را در runtime خودش عوض کند؟
    به چی درد میخود؟؟؟؟؟؟؟؟؟؟؟ من چند سال قبلا با همین شیوه موفق به ساخت ویروسی جالب شدم!

    (البته دیگر ویروس را کنار گذاشته ام.)

    ولی در کل این هم مزیت حساب نمی شود، چون برای انجام کارها و الگوریتم های پیچیده نیاز به ساعت ها و روزها کد نویسی می باشد و خدا نکند که بخواهید قسمتی را تغییر دهید، روز از نو روزی از نو!!! (زبان های VB.Net و #C تقریباَ بسیار مناسب و قدرتمند هستند)


    سلام:

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

    من با اسمبلی یک فایل exe در حد 400 بایت نوشتم و روی ویندوز بخوبی اجرا شد !!!!!!! باورش خیلی سخته البته نه برای شما که شبیه به همین کار را کردید ولی گفتم می توان حجم را از این هم کمتر کرد . چنین حجم کمی الزاما ویروس نیست بلکه می تواند یک برنامه ی سالم و کابردی باشد .

  19. #19
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

    نقل قول نوشته شده توسط Best Programmer مشاهده تاپیک
    سلام افشین خان.
    در این مورد یه کم درباره gcc جستجو کنی یه چیزایی دست گیرت میشه.
    و اگر وقت کردی کتاب Professional assembly از wrox‌را بخونی ، خیلی بیشتر با این موضوع آشنا می شوید ولی هیچ وقت اسمبلی زبانی نیست که آدم بشینه باهاش یک window manager بنویسه و database programming بکنه. بیشترین کاربرداش در Realtime (kernel+ Device Driver) و قسمتی هم در استفاده از SSEx ها (منظورم Game Development) هست.


    نمی دانم شما تحت چه سیستم عاملی کار کردید ولی فکر نمی کنم تحت ویندوز بوده چون در ویندوز به طور کلی برای دسترسی به Proccess Memory Area و مخصوصا آدرس های بالا شما چندین روش وجود داره که حتما نیازی به اسمبلی نداره.

    فرصتی کردید این را بخوانید

    سلام:

    اتفاقا برای خیلی موارد از جمله همین کار که مهندسی معکوس یا دیباگینگ نرم افزار هست توی ویندوز فقط زبان اسمبلی کاربرد داره . . در ضمن با اسمبلی میشه خیلی راحت مدیر پنجره و مدیر بانک اطلاعاتی نوشت . به سایتهای اسمبلرهای masm32 و Fasm مراجعه کن دوست عزیز . لطفا اینقدر توی سر اسمبلی نزن و با اینکار بیسوادی خودت را با صدای بلند جار نزن .
    در ضمن gcc اصلا یک کامپایلر استاندارد و معقول نیست . بجاش باید با اسمبلی کار کنی تا بفهمی که اسمبلی چه موجود عجیب و غریبی هست . gcc هیچی نیست چز یک کامپایلر زبان سی که به شکل خیلی بدی نوشته شده . اسمبلی در مورد توسعه ی game هم قدرت فراوانی داره . بازهم به Fasm یک نگاهی بیانداز .
    دوست عزیز با تحقیر کردن اسمبلی فقط خودت رو تحقیر می کنی . چون اسمبلی کارها با خواندن نوشته هایت فقط به کم سوادی شما می خندند . لطفا بیشتر از این به خودت توهین نکن . چون حرفهای تو هیچ ضربه ای به زبان اسمبلی نمیزنه و از ارزشهاش کم نمیکنه .

  20. #20
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

    نقل قول نوشته شده توسط Inprise مشاهده تاپیک
    - دسترسی به محتویات و وضعیت پردازنده ربطی به کامپایلر نداره .
    - دسترسی به سخت افزار دو حالت داره :
    غیر مستقیم و با استفاده از توابع سیستم عامل : همه زبانها ، کامپایلر و اسمبلر نقش ویژه ای ایفا نمیکنند .
    مستقیم : نیاز به کد سطح کرنل است ، که اگر زبانی لینکر مناسب داشته باشد میتواند چنین کدی تولید کند و باز هم خود کامپایلر و اسمبلر نقش تعیین کننده ای ندارند .



    با خیلی از زبانها ، با استفاده از تنظیمات مناسب و بسته به کاربرد مورد نظر .



    متامورفیسم ارتباطی به کامپایلر/اسمبلر ندارد . موتورهای متامورفیک متعددی با دلفی و سی نوشته شدن ، و البته اسمبلی .


    قطعا . رجوع به توضیح قبلی .



    زبانهائی که کد کرنل تولید نمیکنند ، من جمله دات نت و وی بی و دلفی و ... بدون توابع سیستم عامل ، به هیچ کدام از عناصر سخت افزاری ، من جمله حافظه ، دسترسی نخواهند داشت . تعامل با سخت افزار و سیستم عامل ، مسئله ای نیست که به زبان و کامپایلر بستگی داشته باشد . این مسئله به نحوهء تولید باینری و نوع دستورات بکار رفته در آن و نحوهء تعامل آن با سیستم عامل ، به عنوان کد User Mode یا کد Kernel Mode است . در تمامی مسائل مطرح شده ، نام بردن از یک زبان یا قیاس یک زبان با زبان دیگر بیهوده بود ، چون اصولا" این مسائل با زبان ارتباطی ندارند ؛



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

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




    سلام:

    جناب اینپرایز علت اینهمه دشمنی شما با زبان اسمبلی چیست؟؟؟
    درضمن کی گفته دسترسی به پردازنده ربطی به کامپایلر نداره ؟؟؟ تنها زبانی که مستقیما با کمک پردازنده برنامه و نرم افزار تولید میکنه اسمبلی هست . واقعا حرفهایت در مورد زبان اسمبلی خنده داره . مثل اینکه شما هنوز بلد نیستید با کمک رجیسترهای پردازنده تحت ویندوز با اسمبلی برنامه بنویسید . من تقریبا هرجا نام شما را می بینم بجز تحقیر کردن اسمبلی و یک مشت افکار توهمی چیزی نمی بینم . بجای اینکه پایت رو روی وجدانت بگذاری و بچه های مردم را فریب بدی سعی کن زبان اسمبلی را بطور اصولی یاد بگیری و با این زبان کاملا اشنا شو ی و مزایای فراوان اسمبلی نسبت به زبانهای سطح بالا را درک کنی بعد بیا اینجا اگر توانستی علیه این زبان رجز خوانی کن . مقاله ی پوچ و توهمی شما در مورد عدم امکان دسترسی به سورس برنامه های زبانهای ناتیو کد همه ی اینترنت را پر کرده و همه ی کاربران را فریب داده ای . از خدا بترس و اینقدر مهمل نباف . انکس که نمیفهمه کامپایلر چیست تو هستی نه طراحان اسمبلرهای قدرتمند زیر :
    masm32 , Fasm , Rosasm
    واقعا برای اینهمه بیسوادی یا دروغ متاسفم . جنابعالی توهم داری و خیال می کنی بدون اسمبلی می توان اسم خودت را مهندس کامپیوتر بگذاری . واقعا برایت متاسفم . خیلی سعی کردم جلوی خودم را بگیرم ولی با دیدن اینهمه دروغ علیه زبان اسمبلی و اینهمه اطلاعات غلط که به بچه های مردم میدهی واقعا نتوانستم سکوت کنم . خدا از سر تقصیراتت بگذره .

    اسمبلی یک زبان برنامه نویسی همه منظوره است و البته خار چشم دشمنان ازادی کاربر .

  21. #21
    کاربر تازه وارد
    تاریخ عضویت
    اسفند 1396
    محل زندگی
    ایران .
    پست
    77

    نقل قول: کارهایی که در اسمبلی می شه انجام داد اما در زبانهای سطح بالا نه

    نقل قول نوشته شده توسط __H2__ مشاهده تاپیک
    جالب است میشه شما یکی بسازید که یه کاری هم انجام بده؟ یکی هم من با اسمبلی میسازم!!!!!



    دل انگیز جان! اسمبلی نیاز به هیچ کدخاص و موتوری برای این کار ندارد، و به راحتی با چند خط کد نویسی عادی خودش این کار را انجام میدهد.



    منظورم را درست متوجه نشدید، منظورم آن بود که دسترسی به حافظه کار خفنی نیست و با VB.NET هم قابل انجام است (چون خیلی ها این را نمیدانند!)
    منظورم آن بود که در دات نت کلاسس هایی آماده با توابعی کامل و جالب وجود دارند که اجازه دسترسی راحت به حافظه را میدهند (و درست است که در زیر ساخت، خود این کلاسس ها از api های ویندوز استفاده میکنند ولی برنامه نویسی دات نت (مثلاَ vb ) دیگر خودش نیاز به رجوع به API را ندارد و این امکانات به راحتی در دسترش است.



    من هم موافق هستم (قابل توجه دوست عزیز! کاربر azadeh2 )
    اگر بخواهیم از هر زبان آخرین نسخه آن را معیار قرار دهیم، میبینیم که ورژن های امروزی بسیار قدرتمند شده اند و تا حدودی بحث زبان سطح پایین و بالا را از بین برده اند و همه کار انجام میدهند. مثلاَ VisaulC++‎‎.Net2005 زبان سطح بالا است یا پایین، اگر سطج پایین است پس دسترسی به مخزن عظم فریم ورک و انجام کارهای سنگین با کدی ساده چه میشود؟؟؟

    البته موردی می توان تفاووت ها را بررسی کرد.
    مثلا در مقایسه اسمبلی با VB.Net و #C میتوان گفت اسمبلی توانایی تولید DLL دارای API استاندارد ویندوز را دارد. (لی همین توانایی در VC++‎‎.Net نیز وجود دارد و شاید در Delphi.Net نیز باشد. (چیزی از دلفی بلد نیستم))

    دوست عزیز آقای azadeh2 به شما پیشنهاد میکنم به جاری بررسی کلی، مقالتان را به بررسی و مقایسه امکانات اسمبلی با تک تک زبان ها به طور جداگانه اختصاص دهید.
    (اگر بخواهید اسمبلی را با تمام دنیای زبان های برنامه نویسی طرف کنید، بدون شک امکان منحصر به فردی را در اسمبلی پیدا نمیکنید!)

    سلام:
    عزیرم اگر اسمبلی را با تمام دنیای زبانهای سطح بالا طرف کنید هزاران امکان منحصر به فرد در اسمبلی می بینید . جمیع زبانهای سطح بالا در مقابل اسمبلی هیچ حرفی برای گفتن ندارند .
    Fasm , Rosasm برو اسمبلی را از اول یاد بگیر بعد بیا اینجا نظر بده .

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

  1. تقاضایی راهنمایی و کمک در کار با Dreamweaver
    نوشته شده توسط احمد کاوه در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: پنج شنبه 29 مهر 1389, 12:41 عصر
  2. آقا چه چیزایی با javascript قابل حل هست چه چیزایی با .net
    نوشته شده توسط odiseh در بخش ASP.NET Web Forms
    پاسخ: 13
    آخرین پست: جمعه 02 فروردین 1387, 04:44 صبح
  3. دوستانی که با interbase آشنایی دارند لطفا راهنمایی کنند
    نوشته شده توسط mehdi_moosavi در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 4
    آخرین پست: شنبه 01 بهمن 1384, 14:11 عصر

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

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