PDA

View Full Version : ?Native Code



1010011010
یک شنبه 22 دی 1392, 03:52 صبح
بخش vb6 رو در native code سایت یافتیم و پرسیدیم اگر vb6 is native پس Visual Basic virtual machine دیگر چه صیغه ایست؟ یا اصلا میشه لطفا تعریفی از native code ارائه بدید؟

mehran901
دوشنبه 23 دی 1392, 00:09 صبح
native کد رو میتونیم به شکل ملموس تعریف کدی بدونیم که به صورت مستقیم توسط سی پی یو اجرا میشه درحالت کلی ما ، درویندوز ، برنامه های تولیدی اغلب یا توسط فریمورک دات نت طراحی میشن یا به صورت کد محلی native ،

فرقشون چیه ؟
فرقشون اینه که کدی که توسط دات نت تولید میشه اعم از فایل های اجرایی سی شارپ یا ویبی دات نت و حتی ویژوال سی++ ... کدها به صورت managed (برنامه نویسی به شکل مدیریت شده و البته محدود شده )کامپایل میشن یعنی فایل خروجی اگزه شما یک فایل باینری هست ، نه یک فایل ترجمه شده توسط اسمبلر

اتفاقی که میوفته برنامه روی هر سیستمی نیاز به دات نت فریم ورک داره تا اجرا بشه ، برای چی ؟ ، برای اینکه فلسفه clr تحقق پیدا کنه ،
مایکروسافت درابتدای شروع کارش رو پروژه دات نت هدفش از ارائه پلت فورم دات نت رو ساخت نرم افزار های Cross platformعنوان کرد که یک بازی تبلیغاتی بود ، نرم افزار هایی که درواقع روی همه سیستم عامل ها با کد یکسان اجرا بشن ، برای همین مایکروسافت محیط clr رو طراحی کرد که توسط داتنت فریم ورک کنترل میشه ، این محیط به برنامه اجازه میده تا متناسب با نوع سیستم عامل و ساختار سی پی یو ، کد محلی بر روی دستگاه مقصد تولید بشه ( برنامه باینری شما توسط کامپایلر jit محیط clr روی سیستم مقصد کامپایل نهایی و متناسب با ساختار پردازنده مقصد کد اسمبلی تولید میشه ، )
عیب بزرگش وابستگیبرنامه به دات نت فریم ورک هست و کاهش سرعت نرم افزار ،

و اما داستان native code ویبی

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

ویبی 6 یک زبان native ناقص هست ، یعنی کد نهایی شما اکثرا به native تبدیل میشه بجز بخش هایی از اون که به صورترفرنسی از فایل Msvbvm60.dll استفاده میشه ،
این فایل از ویندوز 98 به بعد به طور پیشفرض روی سیستم عامل وجود داره و واسطه ای هست در تبدیل بخشی از کد برنامه نهایی ،
زبان هایی مثل سی++ و محیطی مثل ویژوال سی ++ میتونن برنامه هایی به شکل native کامل تولید کنند و البته نکته ای که هست اینه که ویژوال سی++ که حرفهای ترین نرم افزار ها باهاش طراحی شدن از جمله نود32 کاسپراسکی یاهومسنجر مایا اسکایپ وی ال سی فتوشاپ و ... قابلیت اینو داره که برنامه های تولیدی ای هم به شکل managed و هم به شکل native داشته باشه و حتی به صورت ترکیبی هم میتونه به صورت استاتیک از دات نت فریم ورک استفاده کنه بدون اینکه managed باشه ...و یا اینکه با استفاده از فریم ورک کیوت ، برنامهاتونو به صورت کراس پلتفورم کنین که روی سیستم های لینوکس ویندوز اندروید مکینتاژ ios سیمبین winRT ، Vxwordks و... به صورت native اجرا بشه ... ( البته تا نسخه 5.2 ، روی اندروید native نبوده که گویا تو 5.3 native شده ... این موارد رو هم برای تکمیل صحبت هام و معرفی بهتر و کاربردی تر زبان های native و managed گفتم )

بهروز عباسی
چهارشنبه 25 دی 1392, 23:15 عصر
قبلاً یه مقاله جمع و جور در این مورد توی بخش مقالات گذاشتم یه سرچ بزنی بدک نیست "تفاوت کدهای مدیریت شده و مدیریت نشده"(دقیق یادم نیست)

در مورد وی بی هم باید بگم خروجی Native نداره و یه جورایی "مفسر"محسوب میشه.

1010011010
پنج شنبه 26 دی 1392, 18:48 عصر
در مورد وی بی هم باید بگم خروجی Native نداره و یه جورایی "مفسر"محسوب میشه.
تشکز، سوالی که ایجاد میشه اینه که چه طور یه زبان تفسیری میتونه native باشه؟
آیا این تناقض داره با فرمایش جناب مهران؟:

ویبی 6 یک زبان native ناقص هست ، یعنی کد نهایی شما اکثرا به native تبدیل میشه بجز بخش هایی از اون که به صورترفرنسی از فایل Msvbvm60.dll استفاده میشه ،

mehran901
جمعه 27 دی 1392, 11:59 صبح
تشکز، سوالی که ایجاد میشه اینه که چه طور یه زبان تفسیری میتونه native باشه؟
آیا این تناقض داره با فرمایش جناب مهران؟:

نه دوست عزیز آقای بهروزیدرست فرمودن ... اولا باید اشاره کنم ویبی میتونه خروجی های مختلفی تخت عنوان pcode و native code داره ... درحالت p code تقریبا ی حالت تفسیری در تعامل با موتور مجازیش به وجود میاد درحالت p code کل کد شما به صورت ارجاعی از msvbvmX.dll میشه