Have one to sell? Sell yours here
Sparc Architecture, Assembly Language Programming, and C
 
See larger image
 
Tell the Publisher!
I'd like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Sparc Architecture, Assembly Language Programming, and C [Paperback]

Richard P. Paul (Author)
3.1 out of 5 stars  See all reviews (13 customer reviews)


Available from these sellers.


Textbook Student FREE Two-Day Shipping for students on millions of items. Learn more

Formats

Amazon Price New from Used from
Paperback $96.08  
Paperback, July 28, 1993 --  

Book Description

0138768897 978-0138768898 July 28, 1993 2nd
An introduction to computer architecture for the SPARC(R) reduced instruction set architecture, this text teaches how to evaluate compilers, data strucures, and control structures in order to write efficient programs in a high-level language.


Editorial Reviews

From the Publisher

An introduction to computer architecture for the SPARC® reduced instruction set architecture, this text teaches how to evaluate compilers, data strucures, and control structures in order to write efficient programs in a high-level language.

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 --This text refers to an alternate Paperback edition.


Product Details

  • Paperback: 448 pages
  • Publisher: Prentice Hall; 2nd edition (July 28, 1993)
  • Language: English
  • ISBN-10: 0138768897
  • ISBN-13: 978-0138768898
  • Product Dimensions: 9.2 x 6.9 x 0.9 inches
  • Shipping Weight: 1.4 pounds
  • Average Customer Review: 3.1 out of 5 stars  See all reviews (13 customer reviews)
  • Amazon Best Sellers Rank: #2,450,748 in Books (See Top 100 in Books)

More About the Author

Discover books, learn about writers, read author blogs, and more.

 

Customer Reviews

13 Reviews
5 star:
 (4)
4 star:
 (2)
3 star:
 (1)
2 star:
 (3)
1 star:
 (3)
 
 
 
 
 
Average Customer Review
3.1 out of 5 stars (13 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

22 of 23 people found the following review helpful:
1.0 out of 5 stars dumb as a sack of hammers, weak as a bag of kittens..., April 7, 2001
By A Customer
at best, this book is a quick gloss over a small, safe subset of sparc programming. a very pricey quick gloss. at worst, this book is an exercise in futility and frustration. the author's reliance and execessive use on the m4 macro processor is enough to make one walk into oncoming traffic. none of the examples in the book are decipherable without running through the author's library of m4 macro routines - rather, the reader is presented with an indirect representation of sparc assembly that makes concepts hard to learn. the author's misdirected aims of symbolic abstractions are ok in the context of a higher-level programming language, but are absolutely worthless in the context of assembly-level programming. through this book, one is encouraged to program sparc assembly in a high-level manner similar to C - actual pragmatic and real-world assembly programming idioms are nowhere to be found. needless to say, any reader will be sorrowfully disappointed to find that m4 is about as common as leprosy in production environments. i would be beaten like a red-headed step child if i were to incorporate any of the author's practices at work. do yourself a favor and pick up the documentation at sparc.com and leave richard p. paul to nance around with the m4 processor by himself in his more aptly title book "M4, C, and Sparc Architecture"
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


21 of 24 people found the following review helpful:
5.0 out of 5 stars This is an excellent book about SPARC Assembly Language., June 26, 1999
By A Customer
This review is from: Sparc Architecture, Assembly Language Programming, and C (Paperback)
For anyone interested in learning about the SPARC Architecture/Instruction Set (and RISC machines in general) this book is invaluable. It is especially useful for optimizing iterative and decision making C/C++ constructs. In fact, if one follows the tenets espoused in this book, one can learn to hand optimize time-critical sections of C/C++ code that is better than that produced by gcc or cc - the aversion of the UNIX community to write any code in assembly language notwithstanding.

The book really delivers what its rather verbose title implies. That is, a really outstanding feature of the text is the way in which the author translates the standard C/C++ constructs to their low-level counterparts. He does this in stages - creating a variety of examples that progress from functional but grossly inefficient code fragments up to superbly succinct variants. I have used this book in a one semester undergraduate course at the University of Delaware for three years and have also used excerpts from it when I have taught the MIPS Architecture. There is no other book that treats RISC (or CISC) architecture from Professor Paul's relational premise, with which I totally agree. Having taught INTEL stuff for 10+ years, I firmly believe that much of its content could be effectively utilized in CISC courses. The book is also used as the secondary text in the graduate compiler course at U.D.

The book is not without flaws, most of which are because of an incredible number of typographical errors - I have counted over 60 just involving commas! Hopefully the new edition which I believe is due to be published soon will have been edited/typeset with more care. Also, there are some minor changes to the gnu software (gdb and gcc) that need to be upgraded.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


7 of 7 people found the following review helpful:
2.0 out of 5 stars Confusing, May 20, 2006
By 
Joshua (Circle Pines, Mongolia) - See all my reviews
(REAL NAME)   
I picked up this book to familiarize myself with the SPARC architecture for an upcoming project and I was extremely disappointed in the presentation of the material, both grammatically and intuitively.

First, when learning assembly language, the last thing a reader or student needs is the code to be obfuscated by a preprocessing tool such as m4. Hiding address offsets and variable alignments in nearly impossible to decipher macros is NOT helpful. This does not make it easier to learn assembly. I found myself learning more about a tool that I'll never use after finishing this book than about SPARC assembly.

Second, whoever edited the manuscript for this book should be fired. I found myself editing the book as I read so I could understand what the author was trying to say. I also found the language to be a bit obtuse in a few, unfortunately important, places.

Third, the diagrams in the book need some serious help as well. They were almost useless. Many of them made the topic being discussed more confusing. I found myself using Wikipedia or the Sparc V8 manual more than once.

All that said, the book does try to cover the important aspects of the SPARC architecture. I did get the needed information from the book, but it could have been organized and presented much better.

The book could be a great SPARC reference and tutorial book if these problems were addressed in a future edition.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews











Only search this product's reviews




Suggested Tags from Similar Products

 (What's this?)
Be the first one to add a relevant tag (keyword that's strongly related to this product).
 
(40)
(12)

Your tags: Add your first tag
 

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
Search all Amazon discussions
   
Related forums





Look for Similar Items by Category


Look for Similar Items by Subject