یادداشتهای یک دانشجوی فناوری اطلاعات و ارتباطات مطالب - مقالات - برنامه ها و پروژه های مربوط به فناوری اطلاعات و رایانه گاها علمی و اجتماعی
| ||
|
زبان ماشين هر خانواده ای ازپردازنده ها دارای مجموعه ای از دستورالعمل های منحصر بفرد است که زبان ماشينناميده می شود. مجموعه دستورالعمل های يک پردازنده (Instruction Set) مجموعه ای ازاعداد دودوئی است که ماشين می تواند آنها را درک و اجرا کند. هر نوع CPU تنها زبانمخصوص خود را درک می کند و دارای مفسری بنام microprogram است که دستورات زبانماشين را به سيگنال های سخت افزاری تفسير و ترجمه می کند.
مثال 1. اعداددودئی زير يک دستورالعمل ماشين اينتل است که عدد 5 را در ثبات AL قرار می دهد.
1011 0000 0000 0101
مثال 2. دستورزير ثبات های EAX و EBX را جمع کرده و حاصل را در ثبات EAX ذخيره کند.
0000 0011 1100 0011
هر دستورالعمل زبانماشين شامل کد منحصر بفردی دارد که کدعملياتی (Operation Code) يا Opcode ناميده میشود. Opcode هميشه در ابتدای دستورالعمل قرار می گيرد. اکثر دستورات شامل داده همهستند که توسط دستورالعمل استفاده می شود و عملوند (Operand) نام دارند.
کاملا واضح است کهبرنامه نويسی به زبان ماشين بسيار دشوار است. درک معنی دستورالعمل های کدشده زبانماشين برای انسان کار خسته کننده ای است. خوشبختانه برای هر خانواده از پردازنده هايک زبان اسمبلی ارائه می شود که دستورالعمل های زبان ماشين را به صورت نمادی و قابلفهم تر نشان می دهند.
زبان اسمبلی چیست؟
پردازشگر مرکزی طوری طراحی شده است تا تنها به مجموعهدستورات خاصی که به زبان ماشین نوشته شده اند و بصورت رشته ای از اعداد باینریهستند پاسخ دهد. یک دستور از کدهای عملیات به همراه آرگومانهای یا پارامترهای آنتشکیل شده است. بعنوان مثال، عدد باینری 67099098095 ممکن است معادل درخواست عملیاتجمع ریاضی باشد که با عدد 98 نشان داده می شود که محتویات حافظه در آدرس 670 را بامحتویات حافظه در آدرس 990 جمع می کند و نتیجه را در آدرس 095 قرار میدهد.
زبانهای سمبولیک
زبانهای سمبولیک از کلمات به جای کدهای عملیاتیاستفاده می کنند و به عملیات، با عبارات سمبولیک نظیر add اشاره می کنند. یک دستوردر سطح پایین ترین زبان برنامه نویسی سمبولیک، زبان اسمبلی نامیده می شود که بهتوسط برنامه ای مترجم به نام اسمبلر به زبان ماشین (کد هدف) ترجمه خواهد شد. دستورات در یک زبان اسمبلی شامل بارگذاری متغیرها از مکانی در حافظه یا برعکس قراردادن محتویات متغیرها در مکان خاصی در حافظه می باشد. تناظر میان دستورات زباناسمبلی و دستورات زبان ماشین، تناظری یک به یک است: هر فرمان، توسط یک دستور پیادهسازی می شود. زبان اسمبلی، سطح پایین ترین محاوره قابل فهم را میان خود و یک انساندارد.
نمونه ای ازیک دستور در زبان اسمبلی: mov b2, 3Ah، که به معنای "مقدار 3A را به رجیستر b2 در پردازشگر انتقال بده". کد اسمبلی برای پیاده سازیالگوریتم bubble-sort که اعضا یا اسامی را در یک لیست مرتب می کند به قرار زیراست bs proc array:DWORD,len:DWORD
mov ecx, len mov edx, array bs_o: xor ebp, ebp bs_i: mov eax, DWORD PTR [edx+ebp*4+4] cmp DWORD PTR [edx+ebp*4], eax jb @F xchg eax, DWORD PTR [edx+ebp*4] mov DWORD PTR [edx+ebp*4+4], eax @@: add ebp,1 cmp ebp, ecx jb bs_i loop bs_o pop ebp retn 8 bs endp مرجع: http://www.codecodex.com/wiki/index.php?title=Bubble_sort
سعی کنید تا به یکی از خویشاوندان خود این کد را توضیح دهید. زبان اسمبلیزبان عجیبی غریبی است. حداقل چیزی که در مورد این زبان می توان گفت همین است. همچنین باگ زدایی از آن کاری بغایت سخت می باشد. امروزه، زبان برنامه نویسی اسمبلی،برای نوشتن BIOS، درایور سخت افزارها، و یا در تلویزیونها امروزی بعنوان برنامهمنوها و غیره مورد استفاده قرار می گیرد. بسیار راحت تر خواهد بود تا اززبانهای سمبولیک سطح بالا که از کلمات انگلیسی و علائم ریاضی استفاده می کنند، برایبرنامه نویسی استفاده شوند. بعنوان مثال:
زبان های برنامه نویسی دیگری نیز برای استفاده درساخت برنامه های کاربردی بوجود آمده اند که از ذکر آنها در اینجا خود داری می کنیم. از آنجاییکه زبانهای برنامه نویسی C و C++ اجازه دستکاری در بیتها، بایتها وآدرسهای حافظه را می دهند، به آنها زبانهای برنامه نویسی سطح متوسط اطلاق می شود. رتبه بندی زبان های برنامه نویسی از نظر کارایی و راحتی، می تواند موضوع بحث بزرگیباشد.
در یک زبان برنامه نویسی سمبولیک، عباراتی نظیر A=A+B به چشم می خورندکه به معنای افزودن B به A است. پردازشگر این کار را از طریق چند گام انجام میدهد:
سیستم باینری چیست؟اجازه دهید تصور کنیم که کامپیوترها هنوز اختراع نشده اند و راه هایی را بررسی کنیم که اطلاعات را بتوان با استفاده از پروتکلهای رمز گذاری، ذخیره و مخابره کرد.در ساده ترین روش، پرچمی با دو روی سفید و سیاه به ذهنمان می رسد که جهت سفید و سیاه پرچم به هر تعداد دلخواهی نوسان می کند تا اطلاعات ضروری در ارسال پیام را به شکل مورس مخابره نماید. ذخیره سازی متوالی علانم، بیانگر رشته ای باینری از اعداد 0 و 1 است که صفر بیانگر سفید و 1 بیانگر سیاه است. در نتیجه سیستم باینری چهارچوب کاری را به ما خواهد داد تا بتوانیم اعداد را بصورت رشته ای از 0ها و 1 ها نمایش دهیم. به محض اینکه دریافتیم چگونه اعداد را دستکاری کنیم، می توانیم حروف الفبا را نیز مدیریت کنیم. به این ترتیب که به هر حرف کد عددی را نسبت می دهیم. رشته هایی از حروف، کلمات را تشکیل می دهند و رشته هایی از کلمات جملات، دستورات و نتیجه گیریهایی را تشکیل می دهند که می توانند درست یا غلط باشند. در نتیجه یک سیستم جامع ممکن است با استفاده از آشنایی با این مفهوم، به این فرم باینری نمایش داده شود. ++C چیست؟زبان برنامه نویسی C++ در سال 1985 توسط Bjarne Stroustup در آزمایشگاه AT&T بعنوان توسعه ای بر زبان C بوجود آمد. افزونه هایی که بر این زبان اضافه شده بودند، از زبان Simula گرفته شده بودند. از آن زمان تا کنون، C++، با سرعت زیادی در راستای نیازهای عملی برای یک زبان برنامه نویسی رو به رشد است، نیازهایی که یک زبان برنامه نویسی را قادر می سازد تا بطور موثری انواع مختلفی از داده ها را در کنار یکدیگر مدیریت نماید. محور اصلی در پیاده سازی این زبان برنامه نویسی، مفهوم برنامه نویسی شی گرا است (OOP). امروزه، C++ بازار تجاری را در اختیار خود گرفته است بطوریکه این زبان برنامه نویسی، هم برای برنامه نویسان سیستم های عامل و هم برای برنامه نویسان نرم افزارهای کاربردی، مورد پسند می باشد. برنامه نویسی شی گرابرای آنکه مزیتهای یک زبان برنامه نویسی شی گرا را با یک زبان برنامه نویسی ساختاری نظیر MATLAB، FORTRAN 77، یا C نشان دهیم، فرض می کنیم که یک رقیب ورزشی بین المللی، به جمع دوندگانی از سراسر دنیا ملحق شده است. رکورد هر یک از دوندگان، تشکیل شده است از چندین فیلد شامل نام، کشور، شهر زادگاه، زمان تولد، و بهترین رکورد زمانی. C و ++CC++ بسط یافته زبان برنامه نویسی C است ولی اهدافی والاتر از C را پوشش می دهد بطوریکه باید بعنوان یک زبان مجزا تدریس و آموزش داده شود. لازم به ذکر است که در این مجموعه آموزشی، نیازی به یادگیری زبان C بعنوان پیش نیاز یادگیری C++ نمی باشد اگرچه یاد گرفتن آن می تواند مفید و کمک کننده باشد. کامپایل و تولید فایل اجراییبرای نوشتن دستورات به یک زبان سطح متوسط، در ابتدا نیاز داریم تا یک یا چند فایل که توصیف کننده برنامه اصلی، سابروتین ها و داده های مورد نیاز است را تولید کنیم. فایلها با استفاده از یک ویرایشگرهای متنی یا هر ویرایشگر دیگری می توانند تولید شوند. این فایلها، تشکیل دهنده سورس کد برنامه می باشند. فایلهای داده هاپارامترهای عددی و دیگر داده ها می توانند در فایلهای مجزایی قرار داده شوند که به آنها فایلهای داده یا فایل های پیکربندی اطلاق می شود. همچنین این فایل ها می توانند توسط کاربر و از طریق صفحه کلید در هنگام اجرای برنامه داده شوند. فایل های داده معمولا با پسوند dat. مشخص می شوند و فایل های پیکربندی معمولا با پسوند conf. Cygwin چیست؟یک برنامه نویس ++C بدون تجربه در زمینه Unix، از بسیاری جهات، ناپخته است. انواع مختلفی از سیستم عامل یونیکس در اینترنت بصورت رایگان موجود است و می توانند بسادگی بصورت مجزا یا در مد بوت دوگانه به همراه ویندوز بر روی لپ تاپ ها و کامپیوترهای خانگی نصب شوند. Fedora Core، CentOs، و BSD مثالهایی از این سیستم عامل هستند. Cygwin برای کاربران ویندوزبسته نرم افزاری cygwin، به کاربران ویندوز این امکان را می دهد تا از محیط Unix در محیط ویندوز استفاده کنند و از کتابخانه های یونیکس و برنامه های آن در محیط ویندوز استفاده نمایند. Cygwin، بطور موثر کامپیوتری می سازد که بر روی کامپیوتر شما تحت سیستم عامل ویندوز در حال اجرا است. برای مجزا کردن این دو سیستم عامل از هم، به سیستم عامل یونیکس، "محیط" خواهیم گفت. کاربران MATLAB با مفهوم یک محیط محاسباتی آشنایی دارند. cygwin نام خود را از سه جزء گرفته است:
بسته cygwin می تواند بسادگی و بصورت کاملا رایگان از اینترنت دانلود و نصب شود. آدرس سایت دانلود http://www.cygwin.com است. این بسته شامل برنامه ها و ابزارهای گرانبهایی است که شامل کتابخانه گرافیک X11 و یک کامپایلر C++ است. فایل های باینری اجراییدستورات یا برنامه های هر کامپیوتری، به شکل فایلی باینری و قابل اجرا می باشند که دستورات زبان ماشین را بصورت رمز در خود جا داده است. این فایلها با فراخوانی یا تایپ نام برنامه و سپس با زدن کلید ENTER، یا در یک محیط بصری با کلیک کردن روی آیکون آن، در حافظه رم بارگذاری می شود. برای یافتن فایل باینری مشخص شده، سیستم عامل از طریق مسیر دایرکتوری مشخص شده و همچنین دایرکتوری هایی که کاربر آنها را تعیین کرده است، به دنبال فایل اجرایی مورد نظر می گردد. سیستم عامل چیست؟مهمترین برنامه ای که در یک کامپیوتر وجود دارد، سیستم عامل است (OS). یک سیستم عامل، برنامه ای است که توسط زبان در سطح متوسط نظیر C یا ++C نوشته شده است که توابع و پارامترهایی را تجویز می کنذ که به کامپیوتر خواهد گفت چگونه اجرای فیزیکی خودش را درون واحدهای منطقی، سازماندهی کند، حافظه را مدیریت کند و با محیط بیرونی و کاربران کامپیوتر، تعامل بر قرار کند. رم چیست؟ (RAM)حافظه با قابلیت دسترسی تصادفی (یا اصطلاحا RAM)، بانکی از حافظه اولیه است. نام رم منعکس کننده توانایی در دسترسی به هر آدرسی در حافظه با زمان دسترسی تقریبا یکسان است و این زمان دسترسی، مستقل از آدرس آخرین مکانی از حافظه است که آخرین بار دسترسی به آن صورت گرفته است، بر خلاف اطلاعات ذخیره شده در وسایل خارجی نظیر هارد دیسک یا یک CD-ROM که دسترسی به اطلاعات بصورت ترتیبی بوده و زمان دسترسی متناسب با آخرین مکانی از حافظه خواهد بود که آخرین بار مورد دسترسی قرار گرفته است. حافظه ROM چیست؟بخش کوچکی از حافظه در کامپیوترها بعنوان حاقظه ای فقط خواندنی در نظر گرفته شده اند (ROM) به این معنی که اطلاعات می توانند خوانده شوند ولی نمی توانند ویرایش شوند. مشابه RAM، آدرسهای ROM می توانند با همان زمان دسترسی در RAM ها در دسترس قرار گیرند. بسیاری از وسایل الکتریکی نظیر ماشین حسابهای دستی و ساعت ها، از ROM استفاده می کنند. در یک کامپیوتر، ROM برای ذخیره سازی ورودی/خروجی های سیستم عامل (BIOS)، مورد استفاده قرار می گیرد. از آنجاییکه اطلاعات ذخیره شده در ROM، قابلیت تغییر را ندارند، در نتیجه محتویات BIOS نمی تواند بروز رسانی شود. CPU چیست؟هسته اصلی سخت افزار کامپپیوتر، پردازشگر مرکزی می باشد که بر روی مادر برد قرار داده شده است. جزء اصلی یک پردازشگر، مایکرو چیپی است که با تکنولوژی مدارات مجتمع فشرده ساخته شده است و واحد پردازشگر مرکزی یک میکرو پروسسور نامیده می شود (CPU). CPU ها امروزه شامل بیش از 50 میلیون ترانزیستور می باشند. وظیفه آنها، انجام محاسبات عددی و انجام تصمیم گیریهای منطقی است که در مجموع به آنها عملیات گفته می شود. واحد کنترل (CU) یک CPU، دستورات را تفسیر و به آنها الویت می دهد و واحد منطق ریاضی (ALU)، دستورات را اجرا خواهد کرد. نظرات شما عزیزان: |
|