Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level

Overview

The second volume in the Write Great Code series supplies the critical information that today's computer science students don't often get from college and university courses: How to carefully choose their high-level language statements to produce efficient code. Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level, teaches software engineers how compilers translate high-level language statements and data structures into machine code. Armed with this knowledge, a software engineer can make an ...

See more details below
Other sellers (Paperback)
  • All (27) from $21.20   
  • New (14) from $22.94   
  • Used (13) from $20.98   
Write Great Code, Volume 2: Thinking Low-Level

Available on NOOK devices and apps  
  • NOOK Devices
  • Samsung Galaxy Tab 4 NOOK 7.0
  • Samsung Galaxy Tab 4 NOOK 10.1
  • NOOK HD Tablet
  • NOOK HD+ Tablet
  • NOOK eReaders
  • NOOK Color
  • NOOK Tablet
  • Tablet/Phone
  • NOOK for Windows 8 Tablet
  • NOOK for iOS
  • NOOK for Android
  • NOOK Kids for iPad
  • PC/Mac
  • NOOK for Windows 8
  • NOOK for PC
  • NOOK for Mac
  • NOOK for Web

Want a NOOK? Explore Now

NOOK Book (eBook)
$19.99
BN.com price
(Save 44%)$35.95 List Price

Overview

The second volume in the Write Great Code series supplies the critical information that today's computer science students don't often get from college and university courses: How to carefully choose their high-level language statements to produce efficient code. Write Great Code, Volume 2: Thinking Low-Level, Writing High-Level, teaches software engineers how compilers translate high-level language statements and data structures into machine code. Armed with this knowledge, a software engineer can make an informed choice concerning the use of those high-level structures to help the compiler produce far better machine code—all without having to give up the productivity and portability benefits of using a high-level language.

This second volume supplies the critical information that today's computer science students don't often get from college and university courses: How to carefully choose their high-level language statements to produce efficient code.

Read More Show Less

Product Details

  • ISBN-13: 9781593270650
  • Publisher: No Starch Press San Francisco, CA
  • Publication date: 3/28/2006
  • Series: Write Great Code Series
  • Edition number: 1
  • Pages: 634
  • Sales rank: 839,073
  • Product dimensions: 7.02 (w) x 9.20 (h) x 1.50 (d)

Meet the Author

Randall Hyde is the author of Write Great Code Volumes 1 and 2 (No Starch Press) and the co-author of MASM 6.0 Bible (The Waite Group). He has written for Dr. Dobb ™s Journal, Byte, and various professional journals. Hyde taught assembly language at the University of California, Riverside for over a decade.

Read More Show Less

Table of Contents

Acknowledgments;
Introduction;
Chapter 1: Thinking Low-Level, Writing High-Level;
1.1 1.1 Misconceptions About Compiler Quality;
1.2 1.2 Why Learning Assembly Language Is Still a Good Idea;
1.3 1.3 Why Learning Assembly Language Isn’t Absolutely Necessary;
1.4 1.4 Thinking Low-Level;
1.5 1.5 Writing High-Level;
1.6 1.6 Assumptions;
1.7 1.7 Language-Neutral Approach;
1.8 1.8 Characteristics of Great Code;
1.9 1.9 The Environment for This Text;
1.10 1.10 For More Information;
Chapter 2: Shouldn’t You Learn Assembly Language?;
2.1 2.1 Roadblocks to Learning Assembly Language;
2.2 2.2 Write Great Code, Volume 2, to the Rescue;
2.3 2.3 High-Level Assemblers to the Rescue;
2.4 2.4 The High-Level Assembler (HLA);
2.5 2.5 Thinking High-Level, Writing Low-Level;
2.6 2.6 The Assembly Programming Paradigm (Thinking Low-Level);
2.7 2.7 The Art of Assembly Language and Other Resources;
Chapter 3: 80x86 Assembly for the HLL Programmer;
3.1 3.1 Learning One Assembly Language Is Good, Learning More Is Better;
3.2 3.2 80x86 Assembly Syntaxes;
3.3 3.3 Basic 80x86 Architecture;
3.4 3.4 Literal Constants;
3.5 3.5 Manifest (Symbolic) Constants in Assembly Language;
3.6 3.6 80x86 Addressing Modes;
3.7 3.7 Declaring Data in Assembly Language;
3.8 3.8 Specifying Operand Sizes in Assembly Language;
3.9 3.9 The Minimal 80x86 Instruction Set;
3.10 3.10 For More Information;
Chapter 4: PowerPC Assembly for the HLL Programmer;
4.1 4.1 Learning One Assembly Language Is Good; More Is Better;
4.2 4.2 Assembly Syntaxes;
4.3 4.3 Basic PowerPC Architecture;
4.4 4.4 Literal Constants;
4.5 4.5 Manifest (Symbolic) Constants in Assembly Language;
4.6 4.6 PowerPC Addressing Modes;
4.7 4.7 Declaring Data in Assembly Language;
4.8 4.8 Specifying Operand Sizes in Assembly Language;
4.9 4.9 The Minimal Instruction Set;
4.10 4.10 For More Information;
Chapter 5: Compiler Operation and Code Generation;
5.1 5.1 File Types That Programming Languages Use;
5.2 5.2 Programming Language Source Files;
5.3 5.3 Types of Computer Language Processors;
5.4 5.4 The Translation Process;
5.5 5.5 Compiler Output;
5.6 5.6 Object File Formats;
5.7 5.7 Executable File Formats;
5.8 5.8 Data and Code Alignment in an Object File;
5.9 5.9 Linkers and Their Effect on Code;
5.10 5.10 For More Information;
Chapter 6: Tools for Analyzing Compiler Output;
6.1 6.1 Background;
6.2 6.2 Telling a Compiler to Produce Assembly Output;
6.3 6.3 Using Object-Code Utilities to Analyze Compiler Output;
6.4 6.4 Using a Disassembler to Analyze Compiler Output;
6.5 6.5 Using a Debugger to Analyze Compiler Output;
6.6 6.6 Comparing Output from Two Compilations;
6.7 6.7 For More Information;
Chapter 7: Constants and High-Level Languages;
7.1 7.1 Literal Constants and Program Efficiency;
7.2 7.2 Literal Constants Versus Manifest Constants;
7.3 7.3 Constant Expressions;
7.4 7.4 Manifest Constants Versus Read-Only Memory Objects;
7.5 7.5 Enumerated Types;
7.6 7.6 Boolean Constants;
7.7 7.7 Floating-Point Constants;
7.8 7.8 String Constants;
7.9 7.9 Composite Data Type Constants;
7.10 7.10 For More Information;
Chapter 8: Variables in a High-Level Language;
8.1 8.1 Runtime Memory Organization;
8.2 8.2 What Is a Variable?;
8.3 8.3 Variable Storage;
8.4 8.4 Common Primitive Data Types;
8.5 8.5 Variable Addresses and High-level Languages;
8.6 8.6 Variable Alignment in Memory;
8.7 8.7 For More Information;
Chapter 9: Array Data Types;
9.1 9.1 What Is an Array?;
9.2 9.2 For More Information;
Chapter 10: String Data Types;
10.1 10.1 Character String Formats;
10.2 10.2 Static, Pseudo-Dynamic, and Dynamic Strings;
10.3 10.3 Reference Counting for Strings;
10.4 10.4 Delphi/Kylix Strings;
10.5 10.5 Using Strings in a High-Level Language;
10.6 10.6 Character Data in Strings;
10.7 10.7 For More Information;
Chapter 11: Pointer Data Types;
11.1 11.1 Defining and Demystifying Pointers;
11.2 11.2 Pointer Implementation in High-Level Languages;
11.3 11.3 Pointers and Dynamic Memory Allocation;
11.4 11.4 Pointer Operations and Pointer Arithmetic;
11.5 11.5 A Simple Memory Allocator Example;
11.6 11.6 Garbage Collection;
11.7 11.7 The OS and Memory Allocation;
11.8 11.8 Heap Memory Overhead;
11.9 11.9 Common Pointer Problems;
11.10 11.10 For More Information;
Chapter 12: Record Union, and Class Data Types;
12.1 12.1 Records;
12.2 12.2 Discriminant Unions;
12.3 12.3 Union Declarations in Various Languages;
12.4 12.4 Memory Storage of Unions;
12.5 12.5 Other Uses of Unions;
12.6 12.6 Variant Types;
12.7 12.7 Namespaces;
12.8 12.8 Classes and Objects;
12.9 12.9 For More Information;
Chapter 13: Arithmetic and Logical Expressions;
13.1 13.1 Arithmetic Expressions and Computer Architecture;
13.2 13.2 Optimization of Arithmetic Statements;
13.3 13.3 Side Effects in Arithmetic Expressions;
13.4 13.4 Containing Side Effects: Sequence Points;
13.5 13.5 Avoiding Problems Caused by Side Effects;
13.6 13.6 Forcing a Particular Order of Evaluation;
13.7 13.7 Short-Circuit Evaluation;
13.8 13.8 The Relative Cost of Arithmetic Operations;
13.9 13.9 For More Information;
Chapter 14: Control Structures and Programmatic Decisions;
14.1 14.1 Control Structures Are Slower Than Computations!;
14.2 14.2 Introduction to Low-Level Control Structures;
14.3 14.3 The goto Statement;
14.4 14.4 break, continue, next, return, and Other Limited Forms of the goto Statement;
14.5 14.5 The if Statement;
14.6 14.6 The switch/case Statement;
14.7 14.7 For More Information;
Chapter 15: Iterative Control Structures;
15.1 15.1 The while Loop;
15.2 15.2 The repeat..until (do..until/do..while) Loop;
15.3 15.3 The forever..endfor Loop;
15.4 15.4 The Definite Loop (for Loops);
15.5 15.5 For More Information;
Chapter 16: Functions and Procedures;
16.1 16.1 Simple Function and Procedure Calls;
16.2 16.2 Leaf Functions and Procedures;
16.3 16.3 Macros and Inline Functions;
16.4 16.4 Passing Parameters to a Function or Procedure;
16.5 16.5 Activation Records and the Stack;
16.6 16.6 Parameter-Passing Mechanisms;
16.7 16.7 Function Return Values;
16.8 16.8 For More Information;
Engineering Software;
A Brief Comparison of the 80x86 and PowerPC CPU Families;
A.1 Architectural Differences Between RISC and CISC;
A.2 Compiler and Application Binary Interface Issues;
A.3 Writing Great Code for Both Architectures;
Online Appendices;
;
Colophon;
Updates;

Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)