0 رای
وضعیت موجودی موجود

قیمت قبلی: 6,080,000 ریال
قیمت: 5,680,000 ریال

 



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

From the Inside Flap

Preface to the First Edition
 

This book is written as an introductory text in computer architecture for the SPARC reduced instruction set architecture. It is assumed that readers have a working knowledge of C and UNIX. The GNU compiler gcc and the gdb debugger are used.

Computer architecture is closely related to assembly language programming, as it is through assembly language programs that the architecture of a machine is made apparent. The presentation of the material breaks from the tradition of computer architecture texts in which assembly language programming was presented as a language in which one might write programs; with a knowledge of the computer architecture, there are, today, a number of high-level languages, such as C, which provide most of the capabilities of assembly language programming. The use of high-level languages results in much higher programmer efficiency and level of representation. It is, however, important to understand the machine at the assembly language level in order to write high-level programs intelligently: to decide between competing data and control structures, the use of global variables and function parameters, the use of recursion, nested procedures, etc. While many of these choices are influenced by high-level factors, the machine architecture has a profound effect on the computational efficiency of the resulting choice.

Although the machine language of a computer is easy to understand, its use results in vast quantities of numeric data that have little meaning. Related to the very heart of computer science is the use of symbol manipulation to simplify and to bring to a clear level of understanding the manipulation and generation of low-level numeric codes. Therefore, symbol manipulation is introduced in the first chapter in the form of the m4 macro processor. Throughout the remainder of the book macros are used to simplify and clarify what is being programmed. The generation of reams of assembly language code is discouraged in favor of the highest level of representation possible.

The computer is introduced by way of the calculator, as most students are familiar with calculators. We make use of the Hewlett-Packard programmable calculator, which reveals many details of machine architectures. The HP calculators have a natural machine language. Assembly language programming is introduced to generate calculator programs making use of m4. A more formal introduction to the machine is presented in the latter half of the first chapter. Stack, accumulator, and load/store machine architectures are also introduced in the first chapter.

The second chapter introduces the SPARC architecture so that students may start programming as early as possible. Like swimming, assembly language programming is not learned in a library! Making use of the machine registers for variable storage, students may start writing short programs by the end of the chapter. The assembler, as, is introduced along with gdb, the debugger. Formatted output is deferred until very late in the book to prevent students from developing the "insert a print statement" mode of program debugging. Instead, gdb is introduced as a natural way to examine memory and registers, and to execute programs. The assembler, as, lacks a macro expansion capability, as it was only designed to be an efficient final pass for the compiler, which has its own macro facilities. In general, we will use the assembler as a second pass to m4, which provides a macro facility. Branching is introduced in the second chapter, as it is difficult to write very interesting programs without branches. Together with branching, pipelining is introduced with the resulting need for delay slot instructions. As the initial specification of the SPARC architecture did not have a multiplication or division instruction, calls to the system routines .mul and .div, etc., are introduced in the second chapter without discussing what happens when the call is made.

As each of the architectural features of the machine is introduced it is related as closely as possible to C language constructs so that students learn the relationship between C and the resulting machine language structures. In the second chapter the control structures of C are introduced in assembly language form. In general, algorithms are written in C and then hand-coded into assembly language. Frequently, optimizations are then seen and the assembly language code optimized. However, we then return to C to learn how the optimized code might have been generated directly from C or why it could not. In this way students learn the problems that compiler writers must face and the reasons why many programs are written the way they are.

Once students are able to write and execute simple assembly language programs, binary logic and arithmetic are introduced. Chapter 3 introduces binary storage devices and number systems: binary, octal, and hexadecimal and their conversions. Bitwise logic operations are introduced and the use of the register %g0, which always yields a zero when used as a source register, effectively increasing the instruction set of the machine. Chapter 4 introduces modulus arithmetic and binary multiplication and division. The treatment of multiplication is fairly extensive, as it is needed to understand the multiply-step instruction of the SPARC architecture. Signed and unsigned comparisons are discussed. The chapter concludes with extended precision arithmetic.

Chapter 5 introduces the stack for the storage of variables. Frames are introduced to provide local storage for functions. The definition of variable offsets is discussed and problems of memory alignment and the load and store instructions. Macros are made use of in the definition of stack offsets and the adjustment of the stack pointer to provide storage. Variables are addressed relative to the frame pointer, which is natural for this architecture. We defer the use of static data until Chapter 9, as their use is clumsy with the SPARC architecture and is not representative of current programming practice.

Chapter 6 introduces multidimensional arrays and structures. Problems of array bound checking and lower bounds differing from zero are discussed along with the problems of dynamic arrays so that students understand the reasons for array addressing restrictions in C. Multiplication by constants for array subscripting is introduced and macros for the automatic generation of multiplication sequences developed in Appendix C. The simplicity of structure addressing is presented so that students understand that arrays, while conceptually simple, are usually a poor choice when structures may be used in their place. Macros are developed for the definition of structure fields and storage allocation.

Functions are then introduced, with discussion of the following: register sets, subroutine linkage, arguments, and return values. Examples are given of simple function calls and of function calls with many arguments or that return aggregates. Finally, leaf routines are presented with their limited register usage.

Chapter 8 introduces the machine language of the SPARC architecture and presents the concepts of instruction decoding and operand access. The handling of 32-bit constants is presented together with program counter relative addressing.

In Chapter 9, global data, initialized data, and addressing methods are discussed. ASCII strings are introduced and formatted output discussed. The switch C statement's translation into assembly language is introduced in this chapter. The handling of C command line arguments is presented along with linking with other code.

Chapter 10 discusses input/output from character devices up through I/O processors. The chapter concludes with a section on system input/output using traps.

It is not until Chapter 11 that floating-point is introduced. Floating-point may be left out of a course without affecting the other material. The concept of additional processors with multiple functional units is discussed as well as the interlocking of the floating-point processor with the integer unit. Single, double, and extended precision number formats are described along with NaN's (not a number) and subnormal numbers.

Chapter 12 discusses supervisor mode, processor state registers, and traps. Register window saving by means of traps is discussed in detail. Interrupts are introduced together with hardware traps. This chapter may also be left out of a course without detracting from the other material.

Chapter 13 introduces sharing of the processor between many users and the mechanisms for so doing. Sharing memory is of primary importance and the SPARC virtual memory mapping, translation lookaside buffer, and cache memory system are presented. The chapter concludes with a discussion of context switching.

Chapter 14 presents some alternative architectures, the PDP-11 for historical interest, the VAX as an example of a CISC machine, and the MIPS RISC machine as a contemporary architecture. This chapter may also be left out of a course without detracting from the other

From the Back Cover

 
 

Written from a programmer's perspective, this book 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. This book's loyal audience has been anticipating a revision of a very successful book for this growing market. 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++.

 

  • Provides reader understanding of the complexity and cost of using various data and control structures in high-level languages
  • Includes the latest material on the new Ultra SPARC architecture
  • Frequent references to C and C++ language constructs and their translation into SPARC assembly language
  • Offers optional material on floating point, traps, memory management, and other architectures
  • Companion Website supplements the text with updates and code examples at http://www.prenhall.com/paul

Editorial Reviews

From the Inside Flap

Preface to the First Edition
 

This book is written as an introductory text in computer architecture for the SPARC reduced instruction set architecture. It is assumed that readers have a working knowledge of C and UNIX. The GNU compiler gcc and the gdb debugger are used.

Computer architecture is closely related to assembly language programming, as it is through assembly language programs that the architecture of a machine is made apparent. The presentation of the material breaks from the tradition of computer architecture texts in which assembly language programming was presented as a language in which one might write programs; with a knowledge of the computer architecture, there are, today, a number of high-level languages, such as C, which provide most of the capabilities of assembly language programming. The use of high-level languages results in much higher programmer efficiency and level of representation. It is, however, important to understand the machine at the assembly language level in order to write high-level programs intelligently: to decide between competing data and control structures, the use of global variables and function parameters, the use of recursion, nested procedures, etc. While many of these choices are influenced by high-level factors, the machine architecture has a profound effect on the computational efficiency of the resulting choice.

Although the machine language of a computer is easy to understand, its use results in vast quantities of numeric data that have little meaning. Related to the very heart of computer science is the use of symbol manipulation to simplify and to bring to a clear level of understanding the manipulation and generation of low-level numeric codes. Therefore, symbol manipulation is introduced in the first chapter in the form of the m4 macro processor. Throughout the remainder of the book macros are used to simplify and clarify what is being programmed. The generation of reams of assembly language code is discouraged in favor of the highest level of representation possible.

The computer is introduced by way of the calculator, as most students are familiar with calculators. We make use of the Hewlett-Packard programmable calculator, which reveals many details of machine architectures. The HP calculators have a natural machine language. Assembly language programming is introduced to generate calculator programs making use of m4. A more formal introduction to the machine is presented in the latter half of the first chapter. Stack, accumulator, and load/store machine architectures are also introduced in the first chapter.

The second chapter introduces the SPARC architecture so that students may start programming as early as possible. Like swimming, assembly language programming is not learned in a library! Making use of the machine registers for variable storage, students may start writing short programs by the end of the chapter. The assembler, as, is introduced along with gdb, the debugger. Formatted output is deferred until very late in the book to prevent students from developing the "insert a print statement" mode of program debugging. Instead, gdb is introduced as a natural way to examine memory and registers, and to execute programs. The assembler, as, lacks a macro expansion capability, as it was only designed to be an efficient final pass for the compiler, which has its own macro facilities. In general, we will use the assembler as a second pass to m4, which provides a macro facility. Branching is introduced in the second chapter, as it is difficult to write very interesting programs without branches. Together with branching, pipelining is introduced with the resulting need for delay slot instructions. As the initial specification of the SPARC architecture did not have a multiplication or division instruction, calls to the system routines .mul and .div, etc., are introduced in the second chapter without discussing what happens when the call is made.

As each of the architectural features of the machine is introduced it is related as closely as possible to C language constructs so that students learn the relationship between C and the resulting machine language structures. In the second chapter the control structures of C are introduced in assembly language form. In general, algorithms are written in C and then hand-coded into assembly language. Frequently, optimizations are then seen and the assembly language code optimized. However, we then return to C to learn how the optimized code might have been generated directly from C or why it could not. In this way students learn the problems that compiler writers must face and the reasons why many programs are written the way they are.

Once students are able to write and execute simple assembly language programs, binary logic and arithmetic are introduced. Chapter 3 introduces binary storage devices and number systems: binary, octal, and hexadecimal and their conversions. Bitwise logic operations are introduced and the use of the register %g0, which always yields a zero when used as a source register, effectively increasing the instruction set of the machine. Chapter 4 introduces modulus arithmetic and binary multiplication and division. The treatment of multiplication is fairly extensive, as it is needed to understand the multiply-step instruction of the SPARC architecture. Signed and unsigned comparisons are discussed. The chapter concludes with extended precision arithmetic.

Chapter 5 introduces the stack for the storage of variables. Frames are introduced to provide local storage for functions. The definition of variable offsets is discussed and problems of memory alignment and the load and store instructions. Macros are made use of in the definition of stack offsets and the adjustment of the stack pointer to provide storage. Variables are addressed relative to the frame pointer, which is natural for this architecture. We defer the use of static data until Chapter 9, as their use is clumsy with the SPARC architecture and is not representative of current programming practice.

Chapter 6 introduces multidimensional arrays and structures. Problems of array bound checking and lower bounds differing from zero are discussed along with the problems of dynamic arrays so that students understand the reasons for array addressing restrictions in C. Multiplication by constants for array subscripting is introduced and macros for the automatic generation of multiplication sequences developed in Appendix C. The simplicity of structure addressing is presented so that students understand that arrays, while conceptually simple, are usually a poor choice when structures may be used in their place. Macros are developed for the definition of structure fields and storage allocation.

Functions are then introduced, with discussion of the following: register sets, subroutine linkage, arguments, and return values. Examples are given of simple function calls and of function calls with many arguments or that return aggregates. Finally, leaf routines are presented with their limited register usage.

Chapter 8 introduces the machine language of the SPARC architecture and presents the concepts of instruction decoding and operand access. The handling of 32-bit constants is presented together with program counter relative addressing.

In Chapter 9, global data, initialized data, and addressing methods are discussed. ASCII strings are introduced and formatted output discussed. The switch C statement's translation into assembly language is introduced in this chapter. The handling of C command line arguments is presented along with linking with other code.

Chapter 10 discusses input/output from character devices up through I/O processors. The chapter concludes with a section on system input/output using traps.

It is not until Chapter 11 that floating-point is introduced. Floating-point may be left out of a course without affecting the other material. The concept of additional processors with multiple functional units is discussed as well as the interlocking of the floating-point processor with the integer unit. Single, double, and extended precision number formats are described along with NaN's (not a number) and subnormal numbers.

Chapter 12 discusses supervisor mode, processor state registers, and traps. Register window saving by means of traps is discussed in detail. Interrupts are introduced together with hardware traps. This chapter may also be left out of a course without detracting from the other material.

Chapter 13 introduces sharing of the processor between many users and the mechanisms for so doing. Sharing memory is of primary importance and the SPARC virtual memory mapping, translation lookaside buffer, and cache memory system are presented. The chapter concludes with a discussion of context switching.

Chapter 14 presents some alternative architectures, the PDP-11 for historical interest, the VAX as an example of a CISC machine, and the MIPS RISC machine as a contemporary architecture. This chapter may also be left out of a course without detracting from the other

From the Back Cover

 
 

Written from a programmer's perspective, this book 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. This book's loyal audience has been anticipating a revision of a very successful book for this growing market. 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++.

 

  • Provides reader understanding of the complexity and cost of using various data and control structures in high-level languages
  • Includes the latest material on the new Ultra SPARC architecture
  • Frequent references to C and C++ language constructs and their translation into SPARC assembly language
  • Offers optional material on floating point, traps, memory management, and other architectures
  • Companion Website supplements the text with updates and code examples at http://www.prenhall.com/paul

 

منابع کتاب کتاب 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

نظری در مورد این محصول توسط کاربران ارسال نگردیده است.
اولین نفری باشید که در مورد کتاب SPARC Architecture, Assembly Language Programming, and C 2nd Edition نظر می دهد.

ارسال نظر درباره کتاب SPARC Architecture, Assembly Language Programming, and C 2nd Edition

لطفا توجه داشته باشید که ایمیل شما منتشر نخواهد شد.

بر اساس سلیقه شما...

  Product details Paperback Publisher:  ISC Medical; ...
15,060,000 ریال

codebazan

طراحی و اجرا: فروشگاه ساز سبدخرید