کتاب Introduction to Computer Organization: ARM Edition (مقدمهای بر سازماندهی کامپیوتر: ویرایش ARM) به بررسی اصول پایهای سازماندهی و معماری کامپیوتر با تمرکز بر معماری ARM میپردازد. این کتاب ساختار داخلی کامپیوترها، شامل واحد پردازش مرکزی (CPU)، حافظه و ورودی/خروجی را به تفصیل توضیح میدهد و به نحوه تعامل نرمافزار با این سختافزارها میپردازد. همچنین، مفاهیم اصلی برنامهنویسی اسمبلی، چگونگی عملکرد دادهها و نحوه طراحی سیستمهای کامپیوتری را معرفی میکند. هدف این کتاب فراهم کردن درکی عمیق از چگونگی کارکرد کامپیوترها به دانشجویان و محققان در زمینه رایانه است.
در ادامه مقدمهای از کتاب Introduction to Computer Organization: ARM Edition را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Introduction to Computer Organization: ARM Edition:
این کتاب مفاهیم مربوط به چگونگی عملکرد سختافزار کامپیوتر را از منظر یک برنامهنویس معرفی میکند. سختافزار توسط مجموعهای از دستورات ماشین کنترل میشود. روشی که این دستورات سختافزار را کنترل میکنند، معماری مجموعه دستورالعملها (ISA) نامیده میشود. وظیفه برنامهنویس طراحی دنبالهای از این دستورات است که باعث میشود سختافزار عملیات لازم را برای حل یک مسئله انجام دهد.
تقریباً تمام برنامههای کامپیوتری به زبانهای سطح بالا نوشته شدهاند. برخی از این زبانها عمومی هستند و برخی دیگر مختص کاربردهای خاص طراحی شدهاند. اما همه آنها به گونهای طراحی شدهاند که مجموعهای از ساختارهای برنامهنویسی را فراهم کنند که برای حل مسائل به زبان انسانی مناسبتر از کار با ISA و جزئیات سختافزار باشد.
این کتاب برای افرادی است که هرگز به این فکر نکردهاند که در هنگام نوشتن یک برنامه به زبان سطح بالا، چه چیزی “زیر پوست” اتفاق میافتد. شما میدانید که کامپیوترها میتوانند تصمیمگیری کنند، اما چگونه این کار را انجام میدهند؟ شاید بدانید دادهها در بیتها ذخیره میشوند، اما وقتی یک عدد اعشاری ذخیره میشود، این به چه معناست؟ هدف من در این کتاب پاسخ به این و بسیاری سوالات دیگر درباره چگونگی عملکرد کامپیوترها است. ما به بررسی اجزای سختافزاری و دستورالعملهای سطح ماشین که برای کنترل سختافزار استفاده میشوند، خواهیم پرداخت.
من فرض میکنم که شما با اصول برنامهنویسی به یک زبان سطح بالا آشنا هستید، اما لازم نیست که یک برنامهنویس خبره باشید. پس از بحث در مورد اجزای سختافزار، به نوشتن برنامههای زیادی به زبان اسمبلی خواهیم پرداخت، زبانی که به طور مستقیم به دستورالعملهای ماشین ترجمه میشود.
نوشتن به زبان اسمبلی یک فرایند خستهکننده، مستعد خطا و زمانبر است، بنابراین هر زمان که ممکن باشد، باید از آن اجتناب کرد. بهترین زبان برای اکثر پروژههای برنامهنویسی بر روی Raspberry Pi، پایتون است که در Raspberry Pi OS گنجانده شده و پشتیبانی عالی از پروژههای الکترونیکی دارد. پایتون به خوبی ما را از خستگی نوشتن به زبان اسمبلی جدا میکند. با این حال، هدف ما در اینجا مطالعه مفاهیم برنامهنویسی است، نه ایجاد برنامهها، بنابراین به طور عمده از C به عنوان زبان سطح بالای خود استفاده خواهیم کرد.
کتاب Introduction to Computer Organization: ARM Edition بر مبنای معماری AArch64 بنا شده است که نسخه 64 بیتی معماری ARM است. این معماری از مجموعه دستورالعملهای 64 بیتی A64 و 32 بیتی A32 پشتیبانی میکند.
تمام برنامهنویسی در کتاب Introduction to Computer Organization: ARM Edition با استفاده از محیط برنامهنویسی GNU در حال اجرا بر روی Raspberry Pi OS 64 بیتی انجام شده است. تمامی برنامهها بر روی Raspberry Pi 3 و Raspberry Pi 5 من آزمایش شدهاند. فصل 20 شامل بخشی در مورد برنامهنویسی زبان اسمبلی برای پینهای ورودی/خروجی عمومی (GPIO) در Raspberry Pi 5 است که به طور قابل توجهی با مدلهای قبلی Raspberry Pi متفاوت است.
چرا باید کتاب Introduction to Computer Organization: ARM Edition را بخوانید؟
با توجه به اینکه زبانهای سطح بالای زیادی وجود دارند که به شما اجازه میدهند برنامههایی را بدون نگرانی از نحوه کنترل سختافزار با دستورالعملهای ماشین بنویسید، ممکن است بپرسید چرا باید مطالب این کتاب را یاد بگیرید.
تمام زبانهای سطح بالا در نهایت به دستورالعملهای ماشین که سختافزار را کنترل میکنند، ترجمه میشوند. درک اینکه سختافزار چه کاری انجام میدهد و چگونه دستورالعملها آن را کنترل میکنند، به شما کمک میکند تا قابلیتها و محدودیتهای کامپیوتر را درک کنید. من معتقدم این درک میتواند شما را به یک برنامهنویس بهتر تبدیل کند، حتی زمانی که با زبان سطح بالا کار میکنید.
دلایل دیگری نیز برای یادگیری زبان اسمبلی وجود دارد. اگر علاقه شما به برنامهنویسی سیستمها و نوشتن بخشهایی از یک سیستمعامل، نوشتن یک کامپایلر یا حتی طراحی زبان سطح بالا دیگری مربوط میشود، این تلاشها معمولاً نیازمند درک در سطح زبان اسمبلی هستند. و اگر علاقه اصلی شما به سختافزار مربوط میشود، فکر میکنم درک اینکه یک برنامه چگونه از آن سختافزار استفاده خواهد کرد، مهم است.
همچنین فرصتهای چالشبرانگیزی در برنامهنویسی سیستمهای embedded وجود دارد، یا سیستمهایی که در آن کامپیوتر یک وظیفه اختصاصی دارد. این سیستمها بخشهای اصلی زندگی روزمره ما را تشکیل میدهند: مانند تلفنهای همراه، وسایل خانگی، اتومبیلها، سیستمهای HVAC، دستگاههای پزشکی و غیره. سیستمهای embedded جزء ضروری تکنولوژیهای اینترنت اشیاء (IoT) هستند. برنامهنویسی آنها معمولاً نیازمند درک چگونگی تعامل کامپیوتر با دستگاههای سختافزاری مختلف در سطح زبان اسمبلی است.
سرانجام، اگر شما قبلاً زبان اسمبلی را برای پردازنده دیگری یاد گرفتهاید، این کتاب به عنوان یک مقدمه برای مطالعه راهنماهای ARM عمل خواهد کرد.
سازماندهی فصلهای کتاب Introduction to Computer Organization: ARM Edition
این کتاب بهطور تقریبی به سه بخش تقسیم شده است: ریاضیات و منطق، سختافزار و نرمافزار. بخش ریاضیات و منطق برای ارائه زبان لازم برای بحث در مورد مفاهیم طراحی شده است. بخش سختافزار مقدمهای بر اجزای مورد استفاده برای ساخت یک کامپیوتر است.
این دو بخش اول کتاب Introduction to Computer Organization: ARM Edition، زمینه را برای بحث درباره چگونگی کنترل سختافزار توسط نرمافزار فراهم میکنند. ما به بررسی هر یک از ساختارهای اساسی برنامهنویسی در زبان برنامهنویسی C خواهیم پرداخت و در انتهای کتاب به برخی C++ نیز خواهیم پرداخت. سپس خواهیم دید که کامپایلر چگونه کد C/C++ را به زبان اسمبلی ترجمه میکند. همچنین نشان میدهم که چگونه یک برنامهنویس ممکن است همان ساختارها را به طور مستقیم در زبان اسمبلی برنامهنویسی کند.
فصل 1: مقدمه
سه زیربخش اساسی یک کامپیوتر و نحوه اتصال آنها را توصیف میکند. این فصل همچنین به راهاندازی ابزارهای برنامهنویسی استفاده شده در کتاب میپردازد.
فصل 2: فرمتهای ذخیرهسازی داده
فصل دوم کتاب Introduction to Computer Organization: ARM Edition، نشان میدهد که چگونه اعداد صحیح بدون علامت با استفاده از سیستمهای عددی باینری و هگزادسیمال ذخیره میشوند و چگونه کاراکترها در کد ASCII ذخیره میشوند. در این فصل، اولین برنامه C خود را مینویسیم و از دیباگر gdb برای کاوش این مفاهیم استفاده میکنیم.
فصل 3: حساب کامپیوتری
عملیات جمع و تفریق اعداد صحیح بدون علامت و با علامت را توصیف کرده و محدودیتهای استفاده از تعداد ثابت بیتها برای نمایندگی اعداد صحیح را توضیح میدهد.
فصل 4: جبر بولی
فصل چهارم کتاب Introduction to Computer Organization: ARM Edition، عملگرها و توابع جبر بولی را توصیف میکند و به کاهش تابع با استفاده از ابزارهای جبری و نقشههای کارنو میپردازد.
فصل 5: دروازههای منطقی
با مقدمهای بر الکترونیک آغاز میشود و سپس به بررسی دروازههای منطقی و چگونگی ساخت آنها با استفاده از ترانزیستورهای نیمهرسانا اکسید فلز مکمل (CMOS) میپردازد.
فصل 6: مدارهای منطقی ترکیبی
به مدارهای منطقی که حافظه ندارند، مانند افزودنیها، دیکودرها، مالتکسها و دستگاههای منطقی برنامهپذیر میپردازد.
فصل 7: مدارهای منطقی ترتیبی
مدارهای منطقی ساعتدار و بیساعت که حافظه را حفظ میکنند و همچنین طراحی مدار با استفاده از جداول انتقال حالت و نمودارهای حالت را مورد بحث قرار میدهد.
فصل 8: حافظه
سلسلهمراتب حافظه (ابر، ذخیرهسازی کلان، حافظه اصلی، کش، و رجیسترهای CPU) را توصیف کرده و به طراحیهای سختافزاری حافظه برای رجیسترها، SRAM و DRAM میپردازد.
فصل 9: واحد پردازش مرکزی
فصل نهم کتاب Introduction to Computer Organization: ARM Edition، یک نمای کلی از زیربخشهای CPU ارائه میدهد. این فصل همچنین چرخه اجرای دستورالعمل و رجیسترهای اصلی A64 را توضیح میدهد و نشان میدهد که چگونه میتوان محتویات رجیستر را در دیباگر gdb مشاهده کرد.
فصل 10: برنامهنویسی به زبان اسمبلی
به بررسی تابع حداقلی C میپردازد، هم بهعنوان زبان اسمبلی تولید شده توسط کامپایلر و هم بهعنوان نوشتن مستقیم در زبان اسمبلی. این فصل به دستورالعملهای اسمبلی و اولین دستورها میپردازد. من یک مثال از استفاده از رابط کاربری متنی gdb بهعنوان ابزار یادگیری ارائه میدهم.
فصل 11: درون تابع اصلی
روند عبور آرگومانها در رجیسترها، کد مستقل از موقعیت و استفاده از پشته فراخوانی برای عبور آدرس بازگشتی و متغیرهای محلی خودکار را توصیف میکند.
فصل 12: جزئیات دستورالعمل
فصل دوازدهم کتاب Introduction to Computer Organization: ARM Edition، به چگونگی کدگذاری دستورالعملها در سطح بیت میپردازد. این فصل همچنین بحث میکند که چگونه آدرسهای مورد نیاز توسط دستورالعملها محاسبه میشود و الگوریتمهای برنامههای اسمبلی و لینککننده را بررسی میکند.
فصل 13: ساختارهای جریان کنترل
فصل سیزدهم کتاب Introduction to Computer Organization: ARM Edition، پیادهسازی زبان اسمبلی کنترل جریان برنامه با استفاده از ساختارهای while، do-while، for، if-else و switch را پوشش میدهد.
فصل 14: درون زیرتوابع
توضیح میدهد که چگونه توابع به متغیرهای خارجی (جهانی، عبور بهوسیله مقدار، عبور بهوسیله اشارهگر و عبور بهوسیله مرجع) دسترسی دارند و ساختار فریم پشته را خلاصه میکند.
فصل 15: استفادههای خاص از زیرتوابع
فصل پانزدهم کتاب Introduction to Computer Organization: ARM Edition، نشان میدهد که چگونه بازگشت وجود دارد. این فصل به استفاده از زبان اسمبلی برای دسترسی به ویژگیهای سختافزاری CPU که بهطور مستقیم در زبانهای سطح بالا قابل دسترسی نیستند، پرداخته و از یک تابع جداگانه یا اسمبلی داخلی استفاده میکند.
فصل 16: دستورالعملهای منطق بیتی، ضرب و تقسیم
به توضیح ماسک زدن بیت، جابجایی بیتها و دستورالعملهای ضرب و تقسیم میپردازد.
فصل 17: ساختارهای داده
فصل هفدهم کتاب Introduction to Computer Organization: ARM Edition، توضیح میدهد که چگونه آرایهها و رکوردها (structs) در یک برنامه در سطح زبان اسمبلی پیادهسازی و دسترسی پیدا میکنند.
فصل 18: برنامهنویسی شیءگرا
فصل هجدهم کتاب Introduction to Computer Organization: ARM Edition، نشان میدهد که چگونه structs به عنوان اشیاء در C++ استفاده میشوند.
فصل 19: اعداد کسری
اعداد ثابت و شناور، استاندارد IEEE 754 و چند دستورالعمل شناور A64 را توصیف میکند.
فصل 20: ورودی/خروجی
ورودی/خروجی را با حافظه و زمانبندی باس مقایسه میکند، ورودی/خروجی حافظهنگاشته شده را توصیف کرده و نشان میدهد که چگونه GPIO را بر روی Raspberry Pi هم به زبان C و هم به زبان اسمبلی برنامهنویسی کنیم. این فصل همچنین تصویری کلی از برنامهنویسی ورودی/خروجی مبتنی بر نظر را ارائه میدهد و به ورودی/خروجی مبتنی بر وقفه و دسترسی مستقیم به حافظه میپردازد.
فصل 21: استثنائات و وقفهها
فصل بیست و یکم کتاب Introduction to Computer Organization: ARM Edition، بهطور مختصر توضیح میدهد که AArch64 چگونه استثنائات و وقفهها را مدیریت میکند. این فصل شامل مثالی از استفاده از دستور svc برای انجام فراخوانهای سیستم بدون استفاده از محیط زمان اجرایی C است.
سرفصلهای کتاب Introduction to Computer Organization: ARM Edition:
- About the Author
- Brief Contents
- Contents in Detail
- Acknowledgments
- Introduction
- Chapter 1: Setting the Stage
- Chapter 2: Data Storage Formats
- Chapter 3: Computer Arithmetic
- Chapter 4: Boolean Algebra
- Chapter 5: Logic Gates
- Chapter 6: Combinational Logic Circuits
- Chapter 7: Sequential Logic Circuits
- Chapter 8: Memory
- Chapter 9: Central Processing Unit
- Chapter 10: Programming in Assembly Language
- Chapter 11: Inside the main Function
- Chapter 12: Instruction Details
- Chapter 13: Control Flow Constructs
- Chapter 14: Inside Subfunctions
- Chapter 15: Special Uses of Subfunctions
- Chapter 16: Bitwise Logic, Multiplication, and Division Instructions
- Chapter 17: Data Structures
- Chapter 18: Object-Oriented Programming
- Chapter 19: Fractional Numbers
- Chapter 20: Input/Output
- Chapter 21: Exceptions and Interrupts
- Index
جهت دانلود کتاب Introduction to Computer Organization: ARM Edition میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.