PDA

View Full Version : کد اسمبلی در VB



zoncpp
سه شنبه 11 دی 1386, 10:35 صبح
سلام،
من در VB زیاد کد ننوشته ام. برای کاری نیاز دارم در یک پروژه VB یک تکه کد اسمبلی به صورت inline بنویسم. چطور باید این کد رو بنویسم؟

zoncpp
سه شنبه 11 دی 1386, 13:26 عصر
حل نشد که ....
یک سوال : اصلا تو VB می شه کد اسمبلی نوشت ؟؟؟؟؟

zoncpp
سه شنبه 11 دی 1386, 15:53 عصر
کد اسمبلی را در VC,delphi,#C به صورت inline میتوان آورد.
مثلا در VC با کلید واژه asm می توان کد اسمبلی رو بین کد C نوشت:


asm
{
mov eax, 0x55
push eax
pop eax
}
کلید واژه مورد استفاده در delphi و #C هم asm می باشد. اما VB این کلید واژه رو نمی شناسه. نمی دونم، شاید اصلا در VB نمی توان کد اسمبلی آورد. فقط می خوام مطمئن بشم و یا در غیر اینصورت نحوه استفاده از کد اسمبلی رو در VB بدونم

khepelesibilo
سه شنبه 11 دی 1386, 16:59 عصر
چند سال پیش توو planetsourcecode برنامه پردازش تصویری دیدم که کد اسمبلی مورد نظر رو به رشته ای از HEX دستورات‌ تبدیل کرده بود و در زمان اجرای برنامه با copymemory اون رشته تبدیل شده رو ته برنامه کپی می کرد و با دونستن آدرسش اون رو به صورت یک تابع صدا می زد!

راستش کمی پیچیده تر از اون کار کرده بود که خودمم کامل بفهمم چه خبره!! ‌چه برسه به اینکه بتونم برای انجامش کمکی کنم! اما فوقالعاده جالب بود و پردازش تصویر رو با سرعتی خیلی بالا انجام می داد!

الان خود سایت رو گشتم نتوستم دوباره همون کد رو پیدا کنم اما اگه توو آرشیوم پیدا شد حتما اینجا UP میکنم تا شاید با کمک چند نفر بشه ازش نتیجه گرفت!

فعلا تنها راهی که می تونین انجام بدین اینه که مثلا توو DELPHI یا هر زبانی که مسلط هستین یک DLL ساده کامپایل کنین و توو همین TAG های گفته شده کد خودتون رو وارد کنین و توو برنامه VB اون DLL ‌رو صدا بزنین.اماتا جایی که اینهمه سال گشتم توو VB6 جایی برای اینکه مستقیم اسمبلی بنویسین نداره! هر چند اونقدر چیز عجیب دیدم که اگه یکی راهش رو بنویسه !!!!!!‌تعجب نمی کنم!!!

zoncpp
چهارشنبه 12 دی 1386, 11:47 صبح
مرسی
پس من منتظر لینک سایتی که صحبتش رو کردید هستم، امیدوارم پیداش کنید، خیلی بدردم می خوره. چون راه حل نوشتن Dll ، مناسب پروژه من نیست. باید بتونم بین کد exe این کد اسمبلی رو قرار بدم.

Mbt925
دوشنبه 17 دی 1386, 01:36 صبح
برخلاف زبان های دیگه ، فکر نکنم این کار توی ویبی شدنی باشه ، روشی که دوستمون گفتن هم اگه عملی باشه ، راه ساده ای نیست ، استفاده کردن ازش فقط در شرایط خاص بصرفه هست.

Hossein Moradi
دوشنبه 17 دی 1386, 03:34 صبح
ولی من چند تا مثال دارم که در اونها کد اسمبلی رو کامپایل کرده و بعد هم خیلی راحت اون رو تو حافظه اجرا کرده .

Inprise
دوشنبه 17 دی 1386, 05:44 صبح
نه . کامپایلر و لینکر VB امکان وجود inline assembly رو نمیدن و هیچ راهی هم وجود نداره . یه عده برای اینکه بهر حال بتونن داخل برنامه های VB شون از توابع اسمبلی که نوشتن استفاده کنن یه سری کلک ( مثل Patch کردن برنامه لینک کردن obj های اسمبلی با یه لینکر دیگه و ...) ارائه کردن ، اما بهر حال معناش این نیست که inline assembly وجود داره . جوابش کلا منفی است

Hossein Moradi
دوشنبه 17 دی 1386, 07:26 صبح
بله امکان inline assembly اصلا وجود نداره اما میتونی کد اسمبلی رو کامپایل کنی و استفاده کنی

Hossein Moradi
دوشنبه 17 دی 1386, 07:32 صبح
این هم یک مثال خوب
این یک SubClasser هست که باهاش Window ها رو SubClasser می کنند