Product details
- Publisher : Pearson; 2nd edition (July 29, 1999)
- Language : English
- Paperback : 528 pages
- ISBN-10 : 0130255963
-
ISBN-13 : 978-0130255969
کتاب SPARC Architecture, Assembly Language Programming, and C 2nd Edition
For Assembly Language and Architecture courses emphasizing SPARC architecture found in computer science, engineering and business departments.
Written from a programmer's perspective, this long-awaited revision introduces the SPARC assembly language to readers early on. Other introductory material encompasses making use of UNIX tools (the m4 macro processor; the assembler; the gnu emacs editor; and the gdb debugger). Further coverage includes a formal definition of the von Neumann machine, its relationship to programmable calculators, and to the JAVA bytecode and JAVA virtual machine. Not only is this book suitable for introductory computer architecture courses, but for programmers who will be programming SPARC architecture machine in languages such as C and C++.
Editorial Reviews
Editorial Reviews
منابع کتاب کتاب SPARC Architecture, Assembly Language Programming, and C 2nd Edition
برای دوره های اسمبلی زبان و معماری با تاکید بر معماری SPARC که در بخش های علوم کامپیوتر، مهندسی و بازرگانی یافت می شود.
از دیدگاه یک برنامه نویس نوشته شده است، این نسخه مورد انتظار مدتهاست زبان اسمبلی SPARC را در اوایل به خوانندگان معرفی می کند. سایر مطالب مقدماتی شامل استفاده از ابزارهای یونیکس (پردازنده ماکرو m4، اسمبلر، ویرایشگر gnu emacs، و اشکال زدا gdb) است. پوشش بیشتر شامل یک تعریف رسمی از ماشین فون نویمان، رابطه آن با ماشین حساب های قابل برنامه ریزی، و بایت کد جاوا و ماشین مجازی جاوا است. این کتاب نه تنها برای دوره های مقدماتی معماری کامپیوتر، بلکه برای برنامه نویسانی که ماشین معماری SPARC را به زبان هایی مانند C و C++ برنامه نویسی می کنند مناسب است.
از فلپ داخلی
این کتاب به عنوان یک متن مقدماتی در معماری کامپیوتر برای معماری مجموعه دستورالعمل کاهش یافته SPARC نوشته شده است. فرض بر این است که خوانندگان دانش کاری C و UNIX دارند. از کامپایلر گنو gcc و دیباگر gdb استفاده می شود.
معماری کامپیوتر ارتباط نزدیکی با برنامه نویسی به زبان اسمبلی دارد، زیرا از طریق برنامه های زبان اسمبلی است که معماری یک ماشین آشکار می شود. ارائه مطالب از سنت متون معماری کامپیوتر که در آن برنامه نویسی به زبان اسمبلی به عنوان زبانی ارائه می شد که می توان با آن برنامه ها را نوشت، شکسته شد. با دانش معماری کامپیوتر، امروزه تعدادی زبان سطح بالا مانند C وجود دارد که بیشتر قابلیت های برنامه نویسی زبان اسمبلی را فراهم می کند. استفاده از زبان های سطح بالا منجر به کارایی برنامه نویس و سطح نمایش بسیار بالاتری می شود. با این حال، درک ماشین در سطح زبان اسمبلی برای نوشتن هوشمندانه برنامه های سطح بالا مهم است: تصمیم گیری بین داده های رقیب و ساختارهای کنترل،
اگرچه زبان ماشین یک کامپیوتر به راحتی قابل درک است، استفاده از آن منجر به مقادیر زیادی داده عددی می شود که معنای کمی دارند. مربوط به قلب علم کامپیوتر، استفاده از دستکاری نمادها برای ساده کردن و رساندن به سطح واضحی از درک دستکاری و تولید کدهای عددی سطح پایین است. بنابراین دستکاری نمادها در فصل اول در قالب پردازنده ماکرو m4 معرفی شده است. در بقیه کتاب، ماکروها برای سادهسازی و شفافسازی آنچه در حال برنامهریزی است استفاده میشوند. تولید مجموعهای از کدهای زبان اسمبلی به نفع بالاترین سطح نمایش ممکن منع شده است.
کامپیوتر از طریق ماشین حساب معرفی می شود، زیرا اکثر دانش آموزان با ماشین حساب آشنا هستند. ما از ماشینحساب قابل برنامهریزی Hewlett-Packard استفاده میکنیم که جزئیات زیادی از معماری ماشین را نشان میدهد. ماشین حساب های HP دارای زبان ماشین طبیعی هستند. برنامه نویسی به زبان اسمبلی برای تولید برنامه های ماشین حساب با استفاده از m4 معرفی شده است. یک مقدمه رسمی تر از ماشین در نیمه دوم فصل اول ارائه شده است. معماریهای پشته، انباشتهکننده و ماشین بارگذاری/ذخیره نیز در فصل اول معرفی شدهاند.
فصل دوم معماری SPARC را معرفی می کند تا دانش آموزان هر چه زودتر برنامه نویسی را شروع کنند. برنامه نویسی زبان اسمبلی مانند شنا در کتابخانه یاد نمی شود! با استفاده از رجیسترهای ماشین برای ذخیره سازی متغیر، دانش آموزان می توانند تا پایان فصل شروع به نوشتن برنامه های کوتاه کنند. اسمبلر، به عنوان، همراه با gdb، دیباگر معرفی شده است. خروجی قالببندی شده تا اواخر کتاب به تعویق افتاده است تا دانشآموزان نتوانند حالت «درج یک بیانیه چاپی» را برای اشکالزدایی برنامه ایجاد کنند. در عوض، gdb به عنوان یک روش طبیعی برای بررسی حافظه و ثبات ها و اجرای برنامه ها معرفی شده است. اسمبلر، به عنوان، فاقد قابلیت توسعه ماکرو است، زیرا تنها به عنوان یک پاس نهایی کارآمد برای کامپایلر طراحی شده است، که امکانات ماکرو خاص خود را دارد. به طور کلی، ما از اسمبلر به عنوان گذر دوم به m4 استفاده خواهیم کرد که یک تسهیلات ماکرو را فراهم می کند. انشعاب در فصل دوم معرفی شده است، زیرا نوشتن برنامه های بسیار جالب بدون شاخه دشوار است. همراه با انشعاب، خط لوله با نیاز به دستورالعمل های اسلات تاخیری معرفی می شود. از آنجایی که مشخصات اولیه معماری SPARC دستورالعمل ضرب یا تقسیم نداشت، فراخوانیهای روتینهای سیستم .mul و .div و غیره در فصل دوم بدون بحث در مورد اینکه چه اتفاقی در هنگام برقراری فراخوانی میافتد، معرفی میشوند.
همانطور که هر یک از ویژگیهای معماری ماشین معرفی میشود، تا حد امکان با ساختارهای زبان C مرتبط است تا دانشآموزان رابطه بین C و ساختارهای زبان ماشین حاصل را بیاموزند. در فصل دوم ساختارهای کنترلی C به صورت زبان اسمبلی معرفی می شوند. به طور کلی، الگوریتم ها به زبان C نوشته می شوند و سپس به صورت دستی به زبان اسمبلی کدگذاری می شوند. اغلب، بهینه سازی ها مشاهده می شود و کد زبان اسمبلی بهینه می شود. با این حال، ما سپس به C باز می گردیم تا یاد بگیریم که چگونه کد بهینه شده ممکن است مستقیماً از C تولید شده باشد یا چرا نمی تواند. از این طریق دانش آموزان مشکلاتی را که نویسندگان کامپایلر باید با آن مواجه باشند و دلایلی که چرا بسیاری از برنامه ها به همان شکلی که هستند نوشته می شوند را یاد می گیرند.
هنگامی که دانش آموزان قادر به نوشتن و اجرای برنامه های ساده به زبان اسمبلی هستند، منطق باینری و حساب معرفی می شوند. فصل 3 دستگاههای ذخیرهسازی باینری و سیستمهای اعداد را معرفی میکند: باینری، هشتگانه، و هگزادسیمال و تبدیلهای آنها. عملیات منطقی بیتی معرفی شده و از رجیستر %g0 استفاده می شود که همیشه در صورت استفاده به عنوان رجیستر منبع، صفر می دهد و به طور موثر مجموعه دستورات ماشین را افزایش می دهد. فصل 4 محاسبه مدول و ضرب و تقسیم باینری را معرفی می کند. درمان ضرب نسبتاً گسترده است، زیرا برای درک دستورالعملهای چند مرحلهای معماری SPARC لازم است. مقایسه های امضا شده و بدون امضا مورد بحث قرار می گیرد. فصل با محاسبه دقیق دقیق پایان می یابد.
فصل 5 پشته ای را برای ذخیره سازی متغیرها معرفی می کند. فریم ها برای فراهم کردن فضای ذخیره سازی محلی برای توابع معرفی شده اند. تعریف آفست های متغیر و مشکلات تراز حافظه و دستورالعمل های بارگذاری و ذخیره مورد بحث قرار گرفته است. از ماکروها در تعریف جابجایی پشته و تنظیم نشانگر پشته برای ایجاد فضای ذخیره سازی استفاده می شود. متغیرها نسبت به نشانگر فریم آدرس دهی می شوند که برای این معماری طبیعی است. ما استفاده از دادههای استاتیک را تا فصل 9 به تعویق میاندازیم، زیرا استفاده از آنها با معماری SPARC ناشیانه است و نشاندهنده برنامهنویسی فعلی نیست.
فصل 6 آرایه ها و ساختارهای چند بعدی را معرفی می کند. مشکلات بررسی کران آرایه و کران های پایین متفاوت از صفر همراه با مسائل آرایه های پویا مورد بحث قرار می گیرد تا دانش آموزان دلایل محدودیت های آدرس دهی آرایه در C را درک کنند. ضرب با ثابت برای اشتراک آرایه معرفی شده است و ماکروها برای تولید خودکار دنباله های ضرب در ضمیمه C توسعه یافته است. سادگی آدرس دهی ساختار ارائه شده است تا دانش آموزان بفهمند که آرایه ها، در حالی که از نظر مفهومی ساده هستند، معمولاً وقتی ساختارها در جای خود استفاده می شوند، انتخاب ضعیفی هستند. ماکروها برای تعریف زمینه های ساختاری و تخصیص ذخیره سازی توسعه داده شده اند.
سپس توابع با بحث در مورد موارد زیر معرفی می شوند: مجموعه های ثبت، پیوند زیر روال، آرگومان ها و مقادیر بازگشتی. مثالهایی از فراخوانیهای تابع ساده و فراخوانیهای تابع با آرگومانهای زیاد یا مجموعهایی که برمیگردانند، ارائه شدهاند. در نهایت، روال های برگ با استفاده از ثبت محدود آنها ارائه می شود.
فصل 8 زبان ماشین معماری SPARC را معرفی می کند و مفاهیم رمزگشایی دستورالعمل و دسترسی به عملوند را ارائه می کند. مدیریت ثابت های 32 بیتی همراه با آدرس دهی نسبی شمارنده برنامه ارائه شده است.
در فصل 9، داده های سراسری، داده های اولیه و روش های آدرس دهی مورد بحث قرار می گیرند. رشته های ASCII معرفی می شوند و خروجی قالب بندی شده مورد بحث قرار می گیرد. ترجمه دستور سوئیچ C به زبان اسمبلی در این فصل معرفی شده است. مدیریت آرگومان های خط فرمان C همراه با پیوند با سایر کدها ارائه می شود.
فصل 10 ورودی/خروجی از دستگاه های کاراکتر از طریق پردازنده های I/O را مورد بحث قرار می دهد. فصل با بخشی در مورد ورودی/خروجی سیستم با استفاده از تله ها به پایان می رسد.
تا فصل 11 که ممیز شناور معرفی نشده است. ممیز شناور ممکن است بدون تأثیر بر مواد دیگر از یک دوره خارج شود. مفهوم پردازندههای اضافی با واحدهای عملکردی متعدد و همچنین در همبستگی پردازنده ممیز شناور با واحد عدد صحیح مورد بحث قرار گرفته است. فرمتهای اعداد دقیق تک، دوگانه و توسعهیافته همراه با اعداد NaN (نه یک عدد) و اعداد غیرعادی توصیف شدهاند.
فصل 12 حالت سرپرست، رجیسترهای وضعیت پردازنده و تله ها را مورد بحث قرار می دهد. ذخیره پنجره ثبت نام با استفاده از تله ها به تفصیل مورد بحث قرار گرفته است. وقفه ها همراه با تله های سخت افزاری معرفی می شوند. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از مطالب دیگر کاسته شود.
فصل 13 به اشتراک گذاری پردازنده بین بسیاری از کاربران و مکانیسم های انجام این کار را معرفی می کند. اشتراک گذاری حافظه از اهمیت اولیه برخوردار است و نقشه برداری حافظه مجازی SPARC، بافر کناری ترجمه و سیستم حافظه کش ارائه شده است. فصل با بحث در مورد تغییر زمینه به پایان می رسد.
فصل 14 برخی از معماری های جایگزین، PDP-11 برای علاقه تاریخی، VAX به عنوان نمونه ای از یک ماشین CISC، و ماشین MIPS RISC به عنوان یک معماری معاصر را ارائه می دهد. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از دیگری کاسته شود
از پشت جلد
این کتاب که از دیدگاه یک برنامه نویس نوشته شده است، زبان اسمبلی SPARC را در ابتدا به خوانندگان معرفی می کند. سایر مطالب مقدماتی شامل استفاده از ابزارهای UNIX® (پردازنده ماکرو m4، اسمبلر، ویرایشگر gnu emacs و اشکال زدا gdb) است. پوشش بیشتر شامل یک تعریف رسمی از ماشین فون نویمان، رابطه آن با ماشین حساب های قابل برنامه ریزی، و بایت کد JAVA و ماشین مجازی JAVA است. مخاطبان وفادار این کتاب منتظر بازبینی یک کتاب بسیار موفق برای این بازار رو به رشد بوده اند. این کتاب نه تنها برای دوره های مقدماتی معماری کامپیوتر، بلکه برای برنامه نویسانی که ماشین معماری SPARC را به زبان هایی مانند C و C++ برنامه نویسی می کنند مناسب است.
- درک پیچیدگی و هزینه استفاده از داده ها و ساختارهای کنترلی مختلف را در زبان های سطح بالا به خواننده ارائه می دهد
- شامل جدیدترین مواد در معماری جدید Ultra SPARC است
- ارجاعات مکرر به ساختارهای زبان C و C++ و ترجمه آنها به زبان اسمبلی SPARC
- مطالب اختیاری را در مورد نقطه شناور، تله ها، مدیریت حافظه و سایر معماری ها ارائه می دهد
- وب سایت همراه متن را با به روز رسانی ها و نمونه های کد در http://www.prenhall.com/paul تکمیل می کند.
از فلپ داخلی
این کتاب به عنوان یک متن مقدماتی در معماری کامپیوتر برای معماری مجموعه دستورالعمل کاهش یافته SPARC نوشته شده است. فرض بر این است که خوانندگان دانش کاری C و UNIX دارند. از کامپایلر گنو gcc و دیباگر gdb استفاده می شود.
معماری کامپیوتر ارتباط نزدیکی با برنامه نویسی به زبان اسمبلی دارد، زیرا از طریق برنامه های زبان اسمبلی است که معماری یک ماشین آشکار می شود. ارائه مطالب از سنت متون معماری کامپیوتر که در آن برنامه نویسی به زبان اسمبلی به عنوان زبانی ارائه می شد که می توان با آن برنامه ها را نوشت، شکسته شد. با دانش معماری کامپیوتر، امروزه تعدادی زبان سطح بالا مانند C وجود دارد که بیشتر قابلیت های برنامه نویسی زبان اسمبلی را فراهم می کند. استفاده از زبان های سطح بالا منجر به کارایی برنامه نویس و سطح نمایش بسیار بالاتری می شود. با این حال، درک ماشین در سطح زبان اسمبلی برای نوشتن هوشمندانه برنامه های سطح بالا مهم است: تصمیم گیری بین داده های رقیب و ساختارهای کنترل،
اگرچه زبان ماشین یک کامپیوتر به راحتی قابل درک است، استفاده از آن منجر به مقادیر زیادی داده عددی می شود که معنای کمی دارند. مربوط به قلب علم کامپیوتر، استفاده از دستکاری نمادها برای ساده کردن و رساندن به سطح واضحی از درک دستکاری و تولید کدهای عددی سطح پایین است. بنابراین دستکاری نمادها در فصل اول در قالب پردازنده ماکرو m4 معرفی شده است. در بقیه کتاب، ماکروها برای سادهسازی و شفافسازی آنچه در حال برنامهریزی است استفاده میشوند. تولید مجموعهای از کدهای زبان اسمبلی به نفع بالاترین سطح نمایش ممکن منع شده است.
کامپیوتر از طریق ماشین حساب معرفی می شود، زیرا اکثر دانش آموزان با ماشین حساب آشنا هستند. ما از ماشینحساب قابل برنامهریزی Hewlett-Packard استفاده میکنیم که جزئیات زیادی از معماری ماشین را نشان میدهد. ماشین حساب های HP دارای زبان ماشین طبیعی هستند. برنامه نویسی به زبان اسمبلی برای تولید برنامه های ماشین حساب با استفاده از m4 معرفی شده است. یک مقدمه رسمی تر از ماشین در نیمه دوم فصل اول ارائه شده است. معماریهای پشته، انباشتهکننده و ماشین بارگذاری/ذخیره نیز در فصل اول معرفی شدهاند.
فصل دوم معماری SPARC را معرفی می کند تا دانش آموزان هر چه زودتر برنامه نویسی را شروع کنند. برنامه نویسی زبان اسمبلی مانند شنا در کتابخانه یاد نمی شود! با استفاده از رجیسترهای ماشین برای ذخیره سازی متغیر، دانش آموزان می توانند تا پایان فصل شروع به نوشتن برنامه های کوتاه کنند. اسمبلر، به عنوان، همراه با gdb، دیباگر معرفی شده است. خروجی قالببندی شده تا اواخر کتاب به تعویق افتاده است تا دانشآموزان نتوانند حالت «درج یک بیانیه چاپی» را برای اشکالزدایی برنامه ایجاد کنند. در عوض، gdb به عنوان یک روش طبیعی برای بررسی حافظه و ثبات ها و اجرای برنامه ها معرفی شده است. اسمبلر، به عنوان، فاقد قابلیت توسعه ماکرو است، زیرا تنها به عنوان یک پاس نهایی کارآمد برای کامپایلر طراحی شده است، که امکانات ماکرو خاص خود را دارد. به طور کلی، ما از اسمبلر به عنوان گذر دوم به m4 استفاده خواهیم کرد که یک تسهیلات ماکرو را فراهم می کند. انشعاب در فصل دوم معرفی شده است، زیرا نوشتن برنامه های بسیار جالب بدون شاخه دشوار است. همراه با انشعاب، خط لوله با نیاز به دستورالعمل های اسلات تاخیری معرفی می شود. از آنجایی که مشخصات اولیه معماری SPARC دستورالعمل ضرب یا تقسیم نداشت، فراخوانیهای روتینهای سیستم .mul و .div و غیره در فصل دوم بدون بحث در مورد اینکه چه اتفاقی در هنگام برقراری فراخوانی میافتد، معرفی میشوند.
همانطور که هر یک از ویژگیهای معماری ماشین معرفی میشود، تا حد امکان با ساختارهای زبان C مرتبط است تا دانشآموزان رابطه بین C و ساختارهای زبان ماشین حاصل را بیاموزند. در فصل دوم ساختارهای کنترلی C به صورت زبان اسمبلی معرفی می شوند. به طور کلی، الگوریتم ها به زبان C نوشته می شوند و سپس به صورت دستی به زبان اسمبلی کدگذاری می شوند. اغلب، بهینه سازی ها مشاهده می شود و کد زبان اسمبلی بهینه می شود. با این حال، ما سپس به C باز می گردیم تا یاد بگیریم که چگونه کد بهینه شده ممکن است مستقیماً از C تولید شده باشد یا چرا نمی تواند. از این طریق دانش آموزان مشکلاتی را که نویسندگان کامپایلر باید با آن مواجه باشند و دلایلی که چرا بسیاری از برنامه ها به همان شکلی که هستند نوشته می شوند را یاد می گیرند.
هنگامی که دانش آموزان قادر به نوشتن و اجرای برنامه های ساده به زبان اسمبلی هستند، منطق باینری و حساب معرفی می شوند. فصل 3 دستگاههای ذخیرهسازی باینری و سیستمهای اعداد را معرفی میکند: باینری، هشتگانه، و هگزادسیمال و تبدیلهای آنها. عملیات منطقی بیتی معرفی شده و از رجیستر %g0 استفاده می شود که همیشه در صورت استفاده به عنوان رجیستر منبع، صفر می دهد و به طور موثر مجموعه دستورات ماشین را افزایش می دهد. فصل 4 محاسبه مدول و ضرب و تقسیم باینری را معرفی می کند. درمان ضرب نسبتاً گسترده است، زیرا برای درک دستورالعملهای چند مرحلهای معماری SPARC لازم است. مقایسه های امضا شده و بدون امضا مورد بحث قرار می گیرد. فصل با محاسبه دقیق دقیق پایان می یابد.
فصل 5 پشته ای را برای ذخیره سازی متغیرها معرفی می کند. فریم ها برای فراهم کردن فضای ذخیره سازی محلی برای توابع معرفی شده اند. تعریف آفست های متغیر و مشکلات تراز حافظه و دستورالعمل های بارگذاری و ذخیره مورد بحث قرار گرفته است. از ماکروها در تعریف جابجایی پشته و تنظیم نشانگر پشته برای ایجاد فضای ذخیره سازی استفاده می شود. متغیرها نسبت به نشانگر فریم آدرس دهی می شوند که برای این معماری طبیعی است. ما استفاده از دادههای استاتیک را تا فصل 9 به تعویق میاندازیم، زیرا استفاده از آنها با معماری SPARC ناشیانه است و نشاندهنده برنامهنویسی فعلی نیست.
فصل 6 آرایه ها و ساختارهای چند بعدی را معرفی می کند. مشکلات بررسی کران آرایه و کران های پایین متفاوت از صفر همراه با مسائل آرایه های پویا مورد بحث قرار می گیرد تا دانش آموزان دلایل محدودیت های آدرس دهی آرایه در C را درک کنند. ضرب با ثابت برای اشتراک آرایه معرفی شده است و ماکروها برای تولید خودکار دنباله های ضرب در ضمیمه C توسعه یافته است. سادگی آدرس دهی ساختار ارائه شده است تا دانش آموزان بفهمند که آرایه ها، در حالی که از نظر مفهومی ساده هستند، معمولاً وقتی ساختارها در جای خود استفاده می شوند، انتخاب ضعیفی هستند. ماکروها برای تعریف زمینه های ساختاری و تخصیص ذخیره سازی توسعه داده شده اند.
سپس توابع با بحث در مورد موارد زیر معرفی می شوند: مجموعه های ثبت، پیوند زیر روال، آرگومان ها و مقادیر بازگشتی. مثالهایی از فراخوانیهای تابع ساده و فراخوانیهای تابع با آرگومانهای زیاد یا مجموعهایی که برمیگردانند، ارائه شدهاند. در نهایت، روال های برگ با استفاده از ثبت محدود آنها ارائه می شود.
فصل 8 زبان ماشین معماری SPARC را معرفی می کند و مفاهیم رمزگشایی دستورالعمل و دسترسی به عملوند را ارائه می کند. مدیریت ثابت های 32 بیتی همراه با آدرس دهی نسبی شمارنده برنامه ارائه شده است.
در فصل 9، داده های سراسری، داده های اولیه و روش های آدرس دهی مورد بحث قرار می گیرند. رشته های ASCII معرفی می شوند و خروجی قالب بندی شده مورد بحث قرار می گیرد. ترجمه دستور سوئیچ C به زبان اسمبلی در این فصل معرفی شده است. مدیریت آرگومان های خط فرمان C همراه با پیوند با سایر کدها ارائه می شود.
فصل 10 ورودی/خروجی از دستگاه های کاراکتر از طریق پردازنده های I/O را مورد بحث قرار می دهد. فصل با بخشی در مورد ورودی/خروجی سیستم با استفاده از تله ها به پایان می رسد.
تا فصل 11 که ممیز شناور معرفی نشده است. ممیز شناور ممکن است بدون تأثیر بر مواد دیگر از یک دوره خارج شود. مفهوم پردازندههای اضافی با واحدهای عملکردی متعدد و همچنین در همبستگی پردازنده ممیز شناور با واحد عدد صحیح مورد بحث قرار گرفته است. فرمتهای اعداد دقیق تک، دوگانه و توسعهیافته همراه با اعداد NaN (نه یک عدد) و اعداد غیرعادی توصیف شدهاند.
فصل 12 حالت سرپرست، رجیسترهای وضعیت پردازنده و تله ها را مورد بحث قرار می دهد. ذخیره پنجره ثبت نام با استفاده از تله ها به تفصیل مورد بحث قرار گرفته است. وقفه ها همراه با تله های سخت افزاری معرفی می شوند. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از مطالب دیگر کاسته شود.
فصل 13 به اشتراک گذاری پردازنده بین بسیاری از کاربران و مکانیسم های انجام این کار را معرفی می کند. اشتراک گذاری حافظه از اهمیت اولیه برخوردار است و نقشه برداری حافظه مجازی SPARC، بافر کناری ترجمه و سیستم حافظه کش ارائه شده است. فصل با بحث در مورد تغییر زمینه به پایان می رسد.
فصل 14 برخی از معماری های جایگزین، PDP-11 برای علاقه تاریخی، VAX به عنوان نمونه ای از یک ماشین CISC، و ماشین MIPS RISC به عنوان یک معماری معاصر را ارائه می دهد. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از دیگری کاسته شود
از پشت جلد
این کتاب که از دیدگاه یک برنامه نویس نوشته شده است، زبان اسمبلی SPARC را در ابتدا به خوانندگان معرفی می کند. سایر مطالب مقدماتی شامل استفاده از ابزارهای UNIX® (پردازنده ماکرو m4، اسمبلر، ویرایشگر gnu emacs و اشکال زدا gdb) است. پوشش بیشتر شامل یک تعریف رسمی از ماشین فون نویمان، رابطه آن با ماشین حساب های قابل برنامه ریزی، و بایت کد JAVA و ماشین مجازی JAVA است. مخاطبان وفادار این کتاب منتظر بازبینی یک کتاب بسیار موفق برای این بازار رو به رشد بوده اند. این کتاب نه تنها برای دوره های مقدماتی معماری کامپیوتر، بلکه برای برنامه نویسانی که ماشین معماری SPARC را به زبان هایی مانند C و C++ برنامه نویسی می کنند مناسب است.
- درک پیچیدگی و هزینه استفاده از داده ها و ساختارهای کنترلی مختلف را در زبان های سطح بالا به خواننده ارائه می دهد
- شامل جدیدترین مواد در معماری جدید Ultra SPARC است
- ارجاعات مکرر به ساختارهای زبان C و C++ و ترجمه آنها به زبان اسمبلی SPARC
- مطالب اختیاری را در مورد نقطه شناور، تله ها، مدیریت حافظه و سایر معماری ها ارائه می دهد
- وب سایت همراه متن را با به روز رسانی ها و نمونه های کد در http://www.prenhall.com/paul تکمیل می کند.
از فلپ داخلی
این کتاب به عنوان یک متن مقدماتی در معماری کامپیوتر برای معماری مجموعه دستورالعمل کاهش یافته SPARC نوشته شده است. فرض بر این است که خوانندگان دانش کاری C و UNIX دارند. از کامپایلر گنو gcc و دیباگر gdb استفاده می شود.
معماری کامپیوتر ارتباط نزدیکی با برنامه نویسی به زبان اسمبلی دارد، زیرا از طریق برنامه های زبان اسمبلی است که معماری یک ماشین آشکار می شود. ارائه مطالب از سنت متون معماری کامپیوتر که در آن برنامه نویسی به زبان اسمبلی به عنوان زبانی ارائه می شد که می توان با آن برنامه ها را نوشت، شکسته شد. با دانش معماری کامپیوتر، امروزه تعدادی زبان سطح بالا مانند C وجود دارد که بیشتر قابلیت های برنامه نویسی زبان اسمبلی را فراهم می کند. استفاده از زبان های سطح بالا منجر به کارایی برنامه نویس و سطح نمایش بسیار بالاتری می شود. با این حال، درک ماشین در سطح زبان اسمبلی برای نوشتن هوشمندانه برنامه های سطح بالا مهم است: تصمیم گیری بین داده های رقیب و ساختارهای کنترل،
اگرچه زبان ماشین یک کامپیوتر به راحتی قابل درک است، استفاده از آن منجر به مقادیر زیادی داده عددی می شود که معنای کمی دارند. مربوط به قلب علم کامپیوتر، استفاده از دستکاری نمادها برای ساده کردن و رساندن به سطح واضحی از درک دستکاری و تولید کدهای عددی سطح پایین است. بنابراین دستکاری نمادها در فصل اول در قالب پردازنده ماکرو m4 معرفی شده است. در بقیه کتاب، ماکروها برای سادهسازی و شفافسازی آنچه در حال برنامهریزی است استفاده میشوند. تولید مجموعهای از کدهای زبان اسمبلی به نفع بالاترین سطح نمایش ممکن منع شده است.
کامپیوتر از طریق ماشین حساب معرفی می شود، زیرا اکثر دانش آموزان با ماشین حساب آشنا هستند. ما از ماشینحساب قابل برنامهریزی Hewlett-Packard استفاده میکنیم که جزئیات زیادی از معماری ماشین را نشان میدهد. ماشین حساب های HP دارای زبان ماشین طبیعی هستند. برنامه نویسی به زبان اسمبلی برای تولید برنامه های ماشین حساب با استفاده از m4 معرفی شده است. یک مقدمه رسمی تر از ماشین در نیمه دوم فصل اول ارائه شده است. معماریهای پشته، انباشتهکننده و ماشین بارگذاری/ذخیره نیز در فصل اول معرفی شدهاند.
فصل دوم معماری SPARC را معرفی می کند تا دانش آموزان هر چه زودتر برنامه نویسی را شروع کنند. برنامه نویسی زبان اسمبلی مانند شنا در کتابخانه یاد نمی شود! با استفاده از رجیسترهای ماشین برای ذخیره سازی متغیر، دانش آموزان می توانند تا پایان فصل شروع به نوشتن برنامه های کوتاه کنند. اسمبلر، به عنوان، همراه با gdb، دیباگر معرفی شده است. خروجی قالببندی شده تا اواخر کتاب به تعویق افتاده است تا دانشآموزان نتوانند حالت «درج یک بیانیه چاپی» را برای اشکالزدایی برنامه ایجاد کنند. در عوض، gdb به عنوان یک روش طبیعی برای بررسی حافظه و ثبات ها و اجرای برنامه ها معرفی شده است. اسمبلر، به عنوان، فاقد قابلیت توسعه ماکرو است، زیرا تنها به عنوان یک پاس نهایی کارآمد برای کامپایلر طراحی شده است، که امکانات ماکرو خاص خود را دارد. به طور کلی، ما از اسمبلر به عنوان گذر دوم به m4 استفاده خواهیم کرد که یک تسهیلات ماکرو را فراهم می کند. انشعاب در فصل دوم معرفی شده است، زیرا نوشتن برنامه های بسیار جالب بدون شاخه دشوار است. همراه با انشعاب، خط لوله با نیاز به دستورالعمل های اسلات تاخیری معرفی می شود. از آنجایی که مشخصات اولیه معماری SPARC دستورالعمل ضرب یا تقسیم نداشت، فراخوانیهای روتینهای سیستم .mul و .div و غیره در فصل دوم بدون بحث در مورد اینکه چه اتفاقی در هنگام برقراری فراخوانی میافتد، معرفی میشوند.
همانطور که هر یک از ویژگیهای معماری ماشین معرفی میشود، تا حد امکان با ساختارهای زبان C مرتبط است تا دانشآموزان رابطه بین C و ساختارهای زبان ماشین حاصل را بیاموزند. در فصل دوم ساختارهای کنترلی C به صورت زبان اسمبلی معرفی می شوند. به طور کلی، الگوریتم ها به زبان C نوشته می شوند و سپس به صورت دستی به زبان اسمبلی کدگذاری می شوند. اغلب، بهینه سازی ها مشاهده می شود و کد زبان اسمبلی بهینه می شود. با این حال، ما سپس به C باز می گردیم تا یاد بگیریم که چگونه کد بهینه شده ممکن است مستقیماً از C تولید شده باشد یا چرا نمی تواند. از این طریق دانش آموزان مشکلاتی را که نویسندگان کامپایلر باید با آن مواجه باشند و دلایلی که چرا بسیاری از برنامه ها به همان شکلی که هستند نوشته می شوند را یاد می گیرند.
هنگامی که دانش آموزان قادر به نوشتن و اجرای برنامه های ساده به زبان اسمبلی هستند، منطق باینری و حساب معرفی می شوند. فصل 3 دستگاههای ذخیرهسازی باینری و سیستمهای اعداد را معرفی میکند: باینری، هشتگانه، و هگزادسیمال و تبدیلهای آنها. عملیات منطقی بیتی معرفی شده و از رجیستر %g0 استفاده می شود که همیشه در صورت استفاده به عنوان رجیستر منبع، صفر می دهد و به طور موثر مجموعه دستورات ماشین را افزایش می دهد. فصل 4 محاسبه مدول و ضرب و تقسیم باینری را معرفی می کند. درمان ضرب نسبتاً گسترده است، زیرا برای درک دستورالعملهای چند مرحلهای معماری SPARC لازم است. مقایسه های امضا شده و بدون امضا مورد بحث قرار می گیرد. فصل با محاسبه دقیق دقیق پایان می یابد.
فصل 5 پشته ای را برای ذخیره سازی متغیرها معرفی می کند. فریم ها برای فراهم کردن فضای ذخیره سازی محلی برای توابع معرفی شده اند. تعریف آفست های متغیر و مشکلات تراز حافظه و دستورالعمل های بارگذاری و ذخیره مورد بحث قرار گرفته است. از ماکروها در تعریف جابجایی پشته و تنظیم نشانگر پشته برای ایجاد فضای ذخیره سازی استفاده می شود. متغیرها نسبت به نشانگر فریم آدرس دهی می شوند که برای این معماری طبیعی است. ما استفاده از دادههای استاتیک را تا فصل 9 به تعویق میاندازیم، زیرا استفاده از آنها با معماری SPARC ناشیانه است و نشاندهنده برنامهنویسی فعلی نیست.
فصل 6 آرایه ها و ساختارهای چند بعدی را معرفی می کند. مشکلات بررسی کران آرایه و کران های پایین متفاوت از صفر همراه با مسائل آرایه های پویا مورد بحث قرار می گیرد تا دانش آموزان دلایل محدودیت های آدرس دهی آرایه در C را درک کنند. ضرب با ثابت برای اشتراک آرایه معرفی شده است و ماکروها برای تولید خودکار دنباله های ضرب در ضمیمه C توسعه یافته است. سادگی آدرس دهی ساختار ارائه شده است تا دانش آموزان بفهمند که آرایه ها، در حالی که از نظر مفهومی ساده هستند، معمولاً وقتی ساختارها در جای خود استفاده می شوند، انتخاب ضعیفی هستند. ماکروها برای تعریف زمینه های ساختاری و تخصیص ذخیره سازی توسعه داده شده اند.
سپس توابع با بحث در مورد موارد زیر معرفی می شوند: مجموعه های ثبت، پیوند زیر روال، آرگومان ها و مقادیر بازگشتی. مثالهایی از فراخوانیهای تابع ساده و فراخوانیهای تابع با آرگومانهای زیاد یا مجموعهایی که برمیگردانند، ارائه شدهاند. در نهایت، روال های برگ با استفاده از ثبت محدود آنها ارائه می شود.
فصل 8 زبان ماشین معماری SPARC را معرفی می کند و مفاهیم رمزگشایی دستورالعمل و دسترسی به عملوند را ارائه می کند. مدیریت ثابت های 32 بیتی همراه با آدرس دهی نسبی شمارنده برنامه ارائه شده است.
در فصل 9، داده های سراسری، داده های اولیه و روش های آدرس دهی مورد بحث قرار می گیرند. رشته های ASCII معرفی می شوند و خروجی قالب بندی شده مورد بحث قرار می گیرد. ترجمه دستور سوئیچ C به زبان اسمبلی در این فصل معرفی شده است. مدیریت آرگومان های خط فرمان C همراه با پیوند با سایر کدها ارائه می شود.
فصل 10 ورودی/خروجی از دستگاه های کاراکتر از طریق پردازنده های I/O را مورد بحث قرار می دهد. فصل با بخشی در مورد ورودی/خروجی سیستم با استفاده از تله ها به پایان می رسد.
تا فصل 11 که ممیز شناور معرفی نشده است. ممیز شناور ممکن است بدون تأثیر بر مواد دیگر از یک دوره خارج شود. مفهوم پردازندههای اضافی با واحدهای عملکردی متعدد و همچنین در همبستگی پردازنده ممیز شناور با واحد عدد صحیح مورد بحث قرار گرفته است. فرمتهای اعداد دقیق تک، دوگانه و توسعهیافته همراه با اعداد NaN (نه یک عدد) و اعداد غیرعادی توصیف شدهاند.
فصل 12 حالت سرپرست، رجیسترهای وضعیت پردازنده و تله ها را مورد بحث قرار می دهد. ذخیره پنجره ثبت نام با استفاده از تله ها به تفصیل مورد بحث قرار گرفته است. وقفه ها همراه با تله های سخت افزاری معرفی می شوند. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از مطالب دیگر کاسته شود.
فصل 13 به اشتراک گذاری پردازنده بین بسیاری از کاربران و مکانیسم های انجام این کار را معرفی می کند. اشتراک گذاری حافظه از اهمیت اولیه برخوردار است و نقشه برداری حافظه مجازی SPARC، بافر کناری ترجمه و سیستم حافظه کش ارائه شده است. فصل با بحث در مورد تغییر زمینه به پایان می رسد.
فصل 14 برخی از معماری های جایگزین، PDP-11 برای علاقه تاریخی، VAX به عنوان نمونه ای از یک ماشین CISC، و ماشین MIPS RISC به عنوان یک معماری معاصر را ارائه می دهد. این فصل همچنین ممکن است از یک درس خارج شود بدون اینکه از دیگری کاسته شود
از پشت جلد
این کتاب که از دیدگاه یک برنامه نویس نوشته شده است، زبان اسمبلی SPARC را در ابتدا به خوانندگان معرفی می کند. سایر مطالب مقدماتی شامل استفاده از ابزارهای UNIX® (پردازنده ماکرو m4، اسمبلر، ویرایشگر gnu emacs و اشکال زدا gdb) است. پوشش بیشتر شامل یک تعریف رسمی از ماشین فون نویمان، رابطه آن با ماشین حساب های قابل برنامه ریزی، و بایت کد JAVA و ماشین مجازی JAVA است. مخاطبان وفادار این کتاب منتظر بازبینی یک کتاب بسیار موفق برای این بازار رو به رشد بوده اند. این کتاب نه تنها برای دوره های مقدماتی معماری کامپیوتر، بلکه برای برنامه نویسانی که ماشین معماری SPARC را به زبان هایی مانند C و C++ برنامه نویسی می کنند مناسب است.
- درک پیچیدگی و هزینه استفاده از داده ها و ساختارهای کنترلی مختلف را در زبان های سطح بالا به خواننده ارائه می دهد
- شامل جدیدترین مواد در معماری جدید Ultra SPARC است
- ارجاعات مکرر به ساختارهای زبان C و C++ و ترجمه آنها به زبان اسمبلی SPARC
- مطالب اختیاری را در مورد نقطه شناور، تله ها، مدیریت حافظه و سایر معماری ها ارائه می دهد
- وب سایت همراه متن را با به روز رسانی ها و نمونه های کد در http://www.prenhall.com/paul تکمیل می کند.
ارسال نظر درباره کتاب SPARC Architecture, Assembly Language Programming, and C 2nd Edition