PDA

View Full Version : ?Native Code



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

mehran901
یک شنبه 22 دی 1392, 23: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, 22:15 عصر
قبلاً یه مقاله جمع و جور در این مورد توی بخش مقالات گذاشتم یه سرچ بزنی بدک نیست "تفاوت کدهای مدیریت شده و مدیریت نشده"(دقیق یادم نیست)

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

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

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

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

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