PDA

View Full Version : Flat Memory???



Best Programmer
سه شنبه 09 دی 1382, 13:41 عصر
انجا میخواهم مطالب اولیه ای بر اسمبلی تحت ویندوز بیارم البته با کمک تمامی دوستان که با سوالات خود مایه امید در این کار شوند!!!!
البته همون طور که همه میدونید من تو تایپ فارسی زیاد حوصله ندارم و اگر بیشتر به english / Finglish بود ناراحت نشوید. البته طو ری خواهم گفت که درکش راحت باشه.البته بهترین کتاب موجود Windows Assembly system programming language است که اگر کسی این کتاب را داشت لطف کنه UpLoad کنه تا همه داشته یاشند ولی متاسفانه من تا بحال پیدا نکردم.!!!!!
چون فقط BOOK ازش چاپ شده نه EBOOK

Inprise
سه شنبه 09 دی 1382, 13:58 عصر
دوست عزیز

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

موفق باشی

Best Programmer
چهارشنبه 10 دی 1382, 00:48 صبح
آخه تایپش برام خیلی طول میکشه و اگر تایپم خوب بود که دیگه کتابم رو کاغذ که نمینوشتم.

Best Programmer
پنج شنبه 11 دی 1382, 04:25 صبح
خوب یکم شروع کنم.
Model Flat.
این چیزی است که در اول هر source code اسمبلی وجود داره. حوب ممکن هست بپرسید پس اون همه مدل دیگه چی شدند )tiny,small,.....)
جواب : در ویندوز تنها 1 مدل وجود دارد و دیگر فرقی بین انواع مدل های DOS قاپل نیست.
These 32-bit operating system employ the flat memory model that, essentially, ignore segments on the 80x86. Furthermore, the remainder of this text also ignores segmentation. What this means is that you don't really need to know anything about segmentation in order to write assembly language programs that run under modern OSes.
منبع: Art of Assembly
یعنی چی؟
یعنی اینکه ما در windows دیگر لازم نیست چیز زیادی درباره Segmention بدونیم . یعنی اینکه ما لازو نیست خودمون را درگیر Balance Stack بکنیم و تمام Register Segment ها 1 چیز بر میگردانند که این کارو بسیار راحت تر میکند
برای مطالعه بیشتر به Intel P4 Manuals مراجعه کنید.

mnajafi
پنج شنبه 05 آذر 1383, 10:18 صبح
سلام
اگه می شه لطفا راجع به نحوه آدرس دهی port ها واینکه چطور می شه به اونها دست پیدا کرد البته توی اسمبلی تحت win منو راهنمایی کن.راجع به این intel p4 manuals هم من توی اینترنت جستجو کردم ولی خیلی راضی کننده نبود چون همه نتایج راجه به امکانات اون بود اگه راجع به موضوعی که گفتم مرجعی هست لطفا بهم معرفی کن.
:موفق:
ممنون

MM_Mofidi
پنج شنبه 05 آذر 1383, 14:24 عصر
دسترسی مستقیم به آدرسهای حافظه و پورتها برای خواندن و نوشتن هم (مخصوصا در خانواده Nt با اعمال محدودیت) و دسترسی به register ها را هم مختصر ا بیان کنید ممنون میشم.(بدون کامپوننت قاعدتا)

MSK
جمعه 06 آذر 1383, 10:01 صبح
سوالی هم که من داشتم اینه که:

یعنی اینکه ما در windows دیگر لازم نیست چیز زیادی درباره Segmention بدونیم . یعنی اینکه ما لازو نیست خودمون را درگیر Balance Stack بکنیم و تمام Register Segment ها 1 چیز بر میگردانند که این کارو بسیار راحت تر میکند
دقیقا یعنی چی؟ :confy2:
یعنی دیگر مفهوم سگمنت وجود ندارد یا فقط یک سگمنت وجود دارد یا ...؟
اگر یکم بیشتر توضیح دهید ممنون می شم.
:sorry:

MSK
جمعه 06 آذر 1383, 10:04 صبح
در ضمن من چندی پیش مطلبی راجع به paging یا یه همچین چیزی خوندم که میگه مموری در حالت حفاظت شده به قطعه های 4k تقسیم میشه.
میشه اینو هم یکم توضیح بدید؟

Best Programmer
دوشنبه 23 آذر 1383, 03:55 صبح
بسیار خوشجالم که بعد از یک سال تازه تاپیک من برای کاربران عزیز مفهوم پیدا کرد. من که از خیر ارایه کتاب گذشتم ولی خوب سوالات دوستان :

اگه می شه لطفا راجع به نحوه آدرس دهی port ها واینکه چطور می شه به اونها دست پیدا کرد
با کمک DLL های متناسب.

دسترسی مستقیم به آدرسهای حافظه و پورتها برای خواندن و نوشتن هم (مخصوصا در خانواده Nt با اعمال محدودیت)
سوال شما 2 تاست : 1: شما در فضای process تون کاملا دسترسی دارید ولی در پروسس های دیگر با محدودیت هایی روبرو هستید 2: منظور از پورت ها اگر همیت پورتهای com1,..x هست خوب در بالا جواب داده شده.

دسترسی به register ها را هم مختصر ا بیان کنید
منظورتون چیه؟ آیا regiter های یک پروسس؟ یا پروسس خودمون؟

یعنی دیگر مفهوم سگمنت وجود ندارد یا فقط یک سگمنت وجود دارد یا ...؟
مفهومش که هست ولی دیگر لازم نیست ما باهاش کاری داشته باشیم.(در حالت عادی)
در ضمن من چندی پیش مطلبی راجع به paging یا یه همچین چیزی خوندم که میگه مموری در حالت حفاظت شده به قطعه های 4k تقسیم میشه.
لطفا مرجع حرفتون رو هم بیان کنید چون من چیزی نشنیدم در این باره برای خودمم جالب شده. شاید هم شما بد متوجه شدید: در ویندوز هر پروسس 4 GB فصای آدرس دهی دارد.

phantasm
چهارشنبه 25 آذر 1383, 15:31 عصر
در ضمن من چندی پیش مطلبی راجع به paging یا یه همچین چیزی خوندم که میگه مموری در حالت حفاظت شده به قطعه های 4k تقسیم میشه.

Paging یه طرح مدیریت حافظه است که معمولا همراه Virtual Memory بکار میره , به طور خلاصه در این روش Process ها به بخشهایی Page هایی تقسیم میشن و حافظه هم به بخشهایی هم اندازه با اونها به اسم Frame (در ویندوز هر Frame برابر 4k بایت است)و اجزای مختلف یه پردازش بوسیله Page Table در حافظه آدرسدهی میشن.
اگه شما با طرح مدیریت سگمنت بندی آشنا باشید , میدونید که در اونجا یه برنامه Process به چند سگمنت یا قطعه مجزا شکسته میشد(سگمنت کد , داده و...)که با داشتن یه Segment Table برای هر پردازش میشه اونها رو آدرسدهی کرد. اما توی Paging یا صفحه بندی هر پردازش به قطعات کوچکتری تقسیم میشه , یعنی ممکنه خود بخش کد شامل 20 تا صفحه باشه که وقتی ما از Virtual Memory استفاده میکنیم دیگه نیازی نیست تمام Page های یک Process به حافظه آورده بشه و میشه با استفاده از Page Table و Page Fault هایی که رخ میده مدیریت حافظه رو انجام داد.


لطفا مرجع حرفتون رو هم بیان کنید چون من چیزی نشنیدم در این باره برای خودمم جالب شده. شاید هم شما بد متوجه شدید: در ویندوز هر پروسس 4 GB فصای آدرس دهی دارد.

برای کسی که Windows Assembly systemخونده این حرف بعیده :evil2:

M.GhanaatPisheh
چهارشنبه 25 آذر 1383, 15:43 عصر
M/Mrs Best_Programmer
Please continue
I am waiting for your posts