100% found this document useful (1 vote)
517 views

Download ebooks file Assembly Programming and Computer Architecture for Software Engineers Brian Hall all chapters

Brian

Uploaded by

seligranftc1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
517 views

Download ebooks file Assembly Programming and Computer Architecture for Software Engineers Brian Hall all chapters

Brian

Uploaded by

seligranftc1
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

Download the Full Version of textbook for Fast Typing at textbookfull.

com

Assembly Programming and Computer Architecture for


Software Engineers Brian Hall

https://textbookfull.com/product/assembly-programming-and-
computer-architecture-for-software-engineers-brian-hall/

OR CLICK BUTTON

DOWNLOAD NOW

Download More textbook Instantly Today - Get Yours Now at textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Software Architecture for Business Lina Khalid

https://textbookfull.com/product/software-architecture-for-business-
lina-khalid/

textboxfull.com

Nonneoplastic Dermatopathology 2nd Edition Brian J. Hall

https://textbookfull.com/product/nonneoplastic-dermatopathology-2nd-
edition-brian-j-hall/

textboxfull.com

Mastering Assembly Programming 1st Edition Alexey Lyashko

https://textbookfull.com/product/mastering-assembly-programming-1st-
edition-alexey-lyashko/

textboxfull.com

Software Architecture FundamentalsA Study Guide for the


Certified Professional for Software Architecture
Foundation Level iSAQB compliant 1st Edition Mahbouba
Gharbi
https://textbookfull.com/product/software-architecture-fundamentalsa-
study-guide-for-the-certified-professional-for-software-architecture-
foundation-level-isaqb-compliant-1st-edition-mahbouba-gharbi/
textboxfull.com
Beginning Julia Programming: For Engineers and Scientists
1st Edition Sandeep Nagar

https://textbookfull.com/product/beginning-julia-programming-for-
engineers-and-scientists-1st-edition-sandeep-nagar/

textboxfull.com

Software Architecture for Big Data and the Cloud 1st


Edition Ivan Mistrik

https://textbookfull.com/product/software-architecture-for-big-data-
and-the-cloud-1st-edition-ivan-mistrik/

textboxfull.com

Computer Organization and Architecture Designing for


Performance 10th Edition William Stallings

https://textbookfull.com/product/computer-organization-and-
architecture-designing-for-performance-10th-edition-william-stallings/

textboxfull.com

C Programming For Dummies (For Dummies (Computer/Tech))


Gookin

https://textbookfull.com/product/c-programming-for-dummies-for-
dummies-computer-tech-gookin/

textboxfull.com

Introduction to Software for Chemical Engineers 2nd


Edition Mariano Martín Martín (Editor)

https://textbookfull.com/product/introduction-to-software-for-
chemical-engineers-2nd-edition-mariano-martin-martin-editor/

textboxfull.com
Assembly Programming and Computer
Architecture for Software Engineers

Brian R. Hall
Champlain College, Burlington, VT

Kevin J. Slonka
Pennsylvania Highlands Community College, Johnstown, PA
Copyright © 2018 Prospect Press, Inc. All rights reserved.

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic,
mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States
Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy
fee to the Copyright Clearance Center, Inc. 222 Rosewood Drive, Danvers, MA 01923, website www.copyright.com. Requests to the
Publisher for permission should be addressed to the Permissions Department, Prospect Press, 47 Prospect Parkway, Burlington, VT
05401 or emailed to Beth.Golub@ProspectPressVT.com.

Founded in 2014, Prospect Press serves the academic disciplines of Computer and Information Systems by publishing innovative
textbooks across the curriculum including introductory, emerging, and upper level courses. Prospect Press offers reasonable prices by
selling directly to students. Prospect Press provides tight relationships between authors, publisher, and adopters that many larger
publishers are unable to offer in today’s publishing environment. Based in Burlington, Vermont, Prospect Press distributes titles
worldwide. We welcome new authors to send proposals or inquiries to Beth.Golub@ProspectPressVT.com.

Editor: Beth Lang Golub


Production Management: Kathy Bond Borie
Cover Design: Annie Clark
Cover Illustration: Hanah Leo

eTextbook ISBN: 978-1-943153-31-2


• Available from Redshelf.com and VitalSource.com

Printed Paperback ISBN: 978-1-943153-32-9


• Available from Redshelf.com and CreateSpace.com

For more information, visit


http://prospectpressvt.com/titles/hall-assembly-programming/

About the cover


Why the mountains on the cover? Mountains are both beautiful and forbidding, much like the two foundational topics addressed
throughout this book: Assembly Programming and Computer Architecture. They are the source of a challenging journey that opens your
eyes to a heightened view of computing. Why the metallic waterfall on the cover? That is just a metaphor for the deep dive into the
content that awaits.
Contents

Preface

Chapter 1 Language and Data Fundamentals


Welcome
Introduction
Computing Languages
Data Representation
Boolean Expressions
3-bit Computer Example
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 2 Processor and System Architecture


Introduction
Architecture Overview
Processors
Input and Output
Summary
Key Terms
Questions
Assignments

Chapters 1 and 2 Supplement More Architecture Details


Program Loading
Memory Access Improvements
Support Processors
Pipelining and Multi-unit Processing
Input/Output System

Chapter 3 Assembly and Syntax Fundamentals


Introduction
Basic Elements
Data Definition
Working Examples
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 4 Basic Instructions


Introduction
Data Movement and Arithmetic
Data Addressing and Transfer
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 5 Intermediate Instructions


Introduction
Boolean Bitwise Operations
Branching
Repetition
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 6 Functions
Introduction
Stack Memory Primer
x86 and x86_64 Calling Conventions
Implementations
Summary
Key Terms
Key Registers (32-bit, 64-bit)
Code Review
Platform Specific Notes
Questions
Assignments

Chapter 6 Supplement Program 6.3 x86_64 Implementation

Chapter 7 String Instructions and Structures


Introduction
Accessory Instructions
String Primitive Instructions
Structures
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 8 Floating-Point Operations


Introduction
Floating-Point Representation
Floating-Point Implementations
Summary
Key Terms
Key Registers (32-bit, 64-bit)
Code Review
Questions
Assignments

Chapter 8 Supplement Chapter 8 Programs


Investment Calculator

Chapter 9 Inline Assembly and Macros


Introduction
Inline Assembly
Macros
Summary
Key Terms
Questions
Assignments

Chapter 10 Advanced Processor and System Architecture


Introduction
Processor and System Capabilities
Interrupts and System Calls
Summary
Key Terms
Code Review
Questions
Assignments

Chapter 10 Supplement Chapter 10 Programs and Resources


Programs
Resources

Chapter 11 Other Architectures


Introduction
CISC versus RISC
More Architectures
Quantum Architecture
Summary
Key Terms
Questions
Assignments

Chapter 12 Hardware and Electrical Components


Introduction
Foundations of Electricity
Electrical Components
Integrated Circuits
Popular Implementations
Summary
Key Terms
Questions
Assignments

Introduction to the Appendices


Welcome and Objective
Lost and Found

Appendix A Assembly Syntax Translation


Appendix B Environment Setup for Assembly Programming
Appendix C Disassembly
Appendix D Command-Line Debugging Assembly with GDB
Appendix E Linking Assembly and C++
Appendix F Functions and Stack
Appendix G Using CPUID
Appendix H ASCII and Decimal Arithmetic
Appendix I Intrinsics

Index
Preface

Mission of the text


Assembly Programming and Computer Architecture for Software Engineers is an educational
examination of Assembly programming and computer architecture. We approach these topics from a
practical point of view, addressing why and how questions throughout the text. We begin by laying the
foundation of computer language and computer architecture, and then we delve into Assembly
programming as a mechanism for gaining a better understanding of computer architecture, and how
Assembly can be used for software development.
Most of the existing books on computer architecture have one or more of the following
disadvantages: (1) based on a non-mainstream architecture; (2) written for computer and electrical
engineers as opposed to computer scientists and software engineers; (3) focused on a single platform-
specific development environment; (4) over-priced; and (5) lacking in practical content. We wanted
to give our students something better.

Audience
Assembly Programming and Computer Architecture for Software Engineers is primarily intended
for undergraduate students in computer science and software engineering programs. Prerequisites for
this book include introductory computing courses and a solid programming foundation up to and
including data structures, preferably in C/C++. Working professionals are also likely to find this book
helpful for independent learning and for writing both low-level and high-level code.

Book Development and Pedagogical Approach


The notion to write a book arises every so often in an academic career, with one driver for book
ideas being the courses we teach. Both of us teach a course on computer architecture, which has been
a staple of computer science and software engineering programs for decades. We also teach in
programs where applied and practical skills are foremost.
During our doctoral studies, we made passing comments about writing a book together and at
some point we decided that doing so was a real possibility. Writing a book takes a lot of effort, thus
our collaboration was essential. So after several years teaching computer architecture and discussing
ideas with our wonderful Prospect Press partner, Beth Golub, we arrived at a basic but unique
concept. We would write a book for teachers, students, and professionals seeking educational content
for computer architecture that overcomes the previously stated disadvantages. Our book is based on
mainstream architecture(s), written for computer scientists and software engineers, written for
multiple development environments, well priced, and loaded with practical content.
Many hours, days, and weeks have been poured into this text and, in particular, the programs.
Writing Assembly code can be infuriating, compelling, and fun, as you are about to discover. Writing
about such a complex topic in a clear and efficient manner was also a particular challenge, as was
choosing what aspects to cover and when—a classic issue with computing content.
For many computing students, learning about computer architecture via Assembly programming is
an advantageous approach. While learning about architecture, useful programming skills are fostered.
We knew that a book based on such an approach would help in our courses and was likely to provide
a much-needed resource for similar institutions, educators, and students. We did our best and we hope
you enjoy learning about Assembly programming and computer architecture the way we enjoy
teaching the topics.

Organization and Objectives


CHAPTERS 1 AND 2 discuss computer language and computer architecture fundamentals.
CHAPTERS 3 THROUGH 5 introduce x86 and x86_64 Assembly syntax and a variety of instructions.
CHAPTERS 6 THROUGH 8 cover the more complex topics of functions, structures, and floating-point
operations.
CHAPTERS 9 AND 10 show advanced ways to use Assembly with high-level languages and system
software, as well as introduce other advanced aspects of computer and system architecture.
CHAPTER 11 explores architectures other than x86
CHAPTER 12 introduces basic hardware principles and components.

Chapter Objectives
Chapter 1: Describe computer language translation
Chapter 2: Identify computer and processor components
Chapter 3: Distinguish between Assembly syntaxes
Chapter 4: Perform basic arithmetic
Chapter 5: Control program flow
Chapter 6: Follow function calling conventions
Chapter 7: Use strings and structures
Chapter 8: Execute floating-point operations
Chapter 9: Integrate low-level and high-level code
Chapter 10: Issue system calls
Chapter 11: Compare computer architectures
Chapter 12: Build simple circuits and devices

Supplements
Chapters 1 and 2, Chapter 6, Chapter 8, and Chapter 10 have additional supplements that provide
programs and content for the respective chapters.

Appendices
The INTRODUCTION TO THE APPENDICES and APPENDICES A THROUGH I provide practical
information such as resources, translating between Assembly syntaxes, development environment
setup, disassembling, debugging, linking Assembly and C++, following calling conventions, using
CPUID, performing Decimal and ASCII arithmetic, and using intrinsics.

Resources
• Book website: http://www.prospectpressvt.com/titles/hall-assembly-programming/
• Book repository: https://github.com/brianrhall/Assembly
• Instructor resources: http://prospectpressvt.com/titles/hall-assembly-programming/instructor-
resources/
• Student resources: http://prospectpressvt.com/titles/hall-assembly-programming/student-
resources/
• Brian’s website: http://www.brianrhall.net
• Kevin’s website: http://www.kevinslonka.com
• For content-specific resources see the APPENDICES (particularly the INTRODUCTION TO THE
APPENDICES) and the WEB RESOURCES links at the beginning of each chapter.

Acknowledgements
We owe a debt of thanks to the people who have been supportive of our efforts in writing this book.
Thank you to the teachers who have led us to where we are in our careers. Thank you to Beth Golub
for giving us the opportunity to publish with Prospect Press and for her wonderful guidance
throughout the writing process. Thank you to our reviewers for taking time to provide valuable
feedback. They include:

John Doyle, Indiana University Southeast


Hai Jiang, Arkansas State University
Saad Khattak, University of Ontario Institute of Technology
Susan Lincke, University of Wisconsin - Parkside
Ray Toal, Loyola Marymount University

Thank you to our colleagues and students for putting up with us clamoring so much about the book
over the past two years. And most of all, thank you to our families -- for Brian, Narine and Aven; for
Kevin, his fiancé, Kelli. Without your tolerance and willingness to sacrifice precious time together,
this work would have not been possible. Thank you.
Brian and Kevin
CHAPTER 1

Language and Data Fundamentals

Objectives
• Distinguish between computing languages
• Identify uses of Assembly programming
• Convert values between number systems
• Solve basic arithmetic problems
• Describe character storage methods
• Evaluate Boolean expressions
• Explain the basics of computer operation

Outline
1. Web Resources
2. Welcome
3. Introduction
4. Computing Languages
a. Language Relationships
b. Translation Pipeline
c. File and Utility Relationships
d. Why Assembly?
5. Data Representation
a. Number Systems
b. Integer Storage
c. Unsigned Integer Storage
d. Signed Integer Storage
e. Character Storage
6. Boolean Expressions
7. 3-bit Computer Example
8. Summary
9. Key Terms
10. Code Review
11. Questions
a. Short Answer
b. True/False
12. Assignments

Web Resources

Wikis
• https://en.wikibooks.org/wiki/X86_Assembly (Assembly Programming Overview)
• https://en.wikibooks.org/wiki/X86_Disassembly (Assembler and Disassembler Overview)

Developer
• http://www.unicode.org
• http://www.unicode.org/charts/PDF/U0000.pdf (ASCII)
• http://devimages.apple.com/llvm/videos/LLVM_Assembler_Infrastructure.mov (LLVM-MC
Overview)

Videos
• Video 1.1: Welcome (https://youtu.be/HBwgXY88hyc)
• Video 1.2: Signing Integers (https://youtu.be/vHijiZMbj9E)
• Video 1.3: A 3-bit Computer Example (https://youtu.be/gYczcmDywag)

Welcome (Video 1.1: https://youtu.be/HBwgXY88hyc)


Welcome to Assembly Programming and Computer Architecture for Software Engineers! The
purpose of this book is to provide an educational examination of Assembly programming and
computer architecture. Our goal is to approach these topics from a practical point of view. We
address questions of why and how throughout the text. The first two chapters lay the foundation of
computer language and computer architecture. The rest of the book uses Assembly programming to
help you gain a better understanding of computer architecture, and guides you in using Assembly for
software development. What makes this book unique is our multifaceted approach.
• This book is based on a dominant architecture in the computing market—x86 and x86_64—and
what you learn will be transferable to other architectures.
• The programming examples are unique in that we provide code for three common assemblers:
GAS, MASM, and NASM. This allows for learning on any OS platform: Mac, Windows, and
Linux. This approach also ensures code examples in both AT&T and Intel syntax.
• We provide context and examples in both 32 and 64-bit, both of which are useful for a
programmer.
• The Appendices provide practical information to help you learn and use the technologies
associated with Assembly and architecture.
• Chapter Supplements provide a deeper dive into topics as necessary.
• We provide links to wikis, developer resources, and videos to assist in further exploration of
topics.
• We use Attention notes, Programming notes, and Learning notes throughout the text to guide the
reader in beneficial ways.

ATTENTION PROGRAMMING LEARNING

ATTENTION: The GNU Assembler (GAS) is primarily a Linux-based assembler used by the
GNU project and has been developed since 1987. GAS is part of the GNU Binutils package and is
used to assemble the Linux kernel amongst other software. The Netwide Assembler (NASM) is a
Linux-based open-source assembler/disassembler for x86 and x86_64 that has been developed
since 1996 by very small team of developers. The Microsoft Macro Assembler (MASM) is a
proprietary assembler for Microsoft’s operating systems, which is packaged with Visual Studio.
MASM has been developed since 1981.

• For the sake of our students, we have focused on keeping this text educational, useful, and
affordable.
We hope you enjoy this book and find it beneficial in your education and career. Happy learning
and coding!

Brian
Kevin

Figure 1.1 Chapter roadmap

Introduction
The purpose of this chapter is to introduce fundamental concepts of computer programs and computer
architecture. We cover relationships between computing languages and Assembly language’s place in
the language hierarchy. We discuss the basics of data representation, number systems, and Boolean
expressions. Additionally, we illustrate chapter concepts with a 3-bit computer system. This chapter
will prepare you for a deeper dive into a specific architecture, x86/x86_64 in CHAPTER 2, and for
understanding Assembly fundamentals beginning in CHAPTER 3.

Computing Languages
Language Relationships
As programmers, we live in a world of computer languages. Understanding where Assembly fits in
the computer language hierarchy is important. Typically, we write code in a high-level language,
which simply means that the statements are roughly English-like. Throughout this text we use the high-
level language C++ in examples. An example of the English-likeness of a high-level language would
be the if…else control structure.

Example 1.1 if…else control structure

High-level languages and the abstraction they provide are great for humans, but the statements
must be translated from high-level to machine-level for execution by a computer. Modern computer
processors are made up of billions of transistors that switch between allowing (1) or not allowing (0)
the flow of electrical current. A system based on two states is called a binary system. Processors
must be fed instructions in numeric binary form; so how do we get from high-level to Assembly to
machine-level?

Translation Pipeline
At this point, we want to illustrate the process of moving from high to low level. Using a practical
approach, we accomplish this by thinking of the process as a translation pipeline (Figure 1.2).
Figure 1.2 Translation pipeline

ATTENTION: The “virtual machine” concept is a more abstract way of thinking about levels in
machine organization and is used in classical examples. You may encounter the term in other texts
and explanations of multilevel design. Virtual machines can be implemented in hardware or
software.

A program written in a high-level language must be translated in order to run at a lower level.
Translation has two forms: (1) interpreting, which is translating line-by-line as the program executes,
and (2) compiling, which is translating all the code in a single step before execution. An example of a
high-level interpreted language is Python. An example of a high-level compiled language is C++.
A high-level language statement such as int x = y + 2; has a one-to-many relationship
with machine language; that is, each high-level statement corresponds to multiple Assembly and
machine instructions.
Assembly is an intermediate form in the translation pipeline. A high-level program is translated
into Assembly and the Assembly is further translated into machine language based on a processor’s
instruction set architecture. The process of Assembly code being translated into machine language is
often called encoding. The inverse process of machine language being translated into Assembly is
often called decoding.
Assembly language statements have a one-to-one relationship with machine language; that is, each
Assembly language instruction corresponds to a single machine language instruction. Machine
language instructions are typically represented in an intermediate numeric form such as hexadecimal,
which is then translated and implemented physically as binary on the hardware, what we call digital
logic.

PROGRAMMING: Some compilers, such as Microsoft’s C compiler, translate high-level code


directly to machine language, and creating Assembly is an option. Other compilers, such as GCC,
translate to Assembly first, then the Assembly code is translated to machine code.

Figure 1.3 Instruction set architecture


An instruction set architecture (ISA) is the programming-related aspect of computer architecture.
The ISA specifies the instructions, registers, memory architecture, data types, and other attributes
native to a particular processor that are available to a programmer. Think of an ISA as the language a
computer speaks. As shown in Figure 1.3, an ISA facilitates communication between software and
hardware.
We can think of instruction set architectures as complex or reduced. Complex instruction set
computing (CISC) architectures have instructions that are of varying length (in bytes) and are complex
in the sense that a single instruction may perform more than one task (e.g., access a memory location
and perform arithmetic). An alternative ISA design is reduced instruction set computing (RISC) in
which all instructions are the same length and perform only one task (e.g., access a memory location).
x86 and x86_64 are CISC architectures, while the majority of other ISAs are RISC architectures.
CISC attributes of x86 will be shown when instructions are discussed in more detail in CHAPTERS 4
AND 5. Also, when disassembly examples are provided, such as in CHAPTERS 6 and 11, the varying
length and complexity of instructions will be evident. You can also see variable length instructions in
the CHAPTER 1 PAGE 7 PROGRAMMING note on relocatable machine language.
PROGRAMMING: Disassembly is the Assembly code output produced by a disassembler after
decoding an object file containing machine language (i.e., decoding machine language bit
sequences into Assembly instructions). Most assemblers, compilers, debuggers, and development
environments, such as NASM (ndisasm), GDB, LLVM, Xcode, and Visual Studio provide
disassembly options. Independent disassemblers are also available such as Capstone, IDA,
objdump, and otool. To learn how to disassemble object files, see APPENDIX C:
DISASSEMBLY.

Common 32-bit x86 ISA names Common 64-bit x86 ISA names
x86 x64
IA-32 x86_64
i386 Intel: IA-32e (past), Intel 64 (current)
AMD: AMD64

ATTENTION: The 32-bit version of the x86 instruction set is commonly known as IA-32 (Intel
Architecture 32-bit). IA-32 is synonymous with i386. The 64-bit version of the x86 instruction set
is commonly known as x64 or x86_64, but other names are used depending on manufacturer. The
64-bit version of x86 should not be confused with the 64-bit Intel Architecture (IA-64) used in the
Itanium line of processors as it is a completely different instruction set architecture. IA-32 and x64
are not compatible with IA-64.

Table 1.1 provides an example of the translation process. The high-level C++ statement sum =
5; assumes that an integer called sum exists. In Table 1.1, the statement is translated into Assembly
using the GNU Assembler (GAS), which uses AT&T syntax. The statement is further encoded into
machine language based on the instruction set architecture for an Intel 32-bit (IA-32) processor. The
machine language instruction is in hexadecimal form, which is digitally (physically) implemented in
binary.
Table 1.1 The translation process

Level Language Code

High-level C++ sum = 5;


language

Assembly GNU Assembler, AT&T movl $0x5, -0x8(%ebp)


language syntax

Machine IA-32 C745F805000000


language

Digital logic Binary (physical 1100 0111 0100 0101 1111 1000 0000 0101 0000 0000
implementation) 0000 0000 0000 0000

Next, we reinforce the translation process by presenting three encoded Assembly instructions in
Example 1.2. Here, the specifics are not the focus, but rather the concept. CHAPTERS 4 and 5 discuss
instructions in further detail.
Assume we have the 32-bit Assembly instruction: MOV eax, 5. If abstracted to a higher-level
statement, this is similar to saying something like variable = 5; but more specifically we are
saying to move (copy) the immediate value 5 to the eax register in Intel Assembly syntax. The MOV
instruction is an opcode and eax is a register, both of which are specified as part of the IA-32
instruction set architecture. The operation of moving an immediate value to the eax register has a
specific machine language counterpart, which encoded in hexadecimal is B8. The immediate value
operand becomes part of the instruction.

Example 1.2 Assembly instructions encoded into Intel 32-bit machine language

Machine language is numeric, so it is helpful to understand number systems, specifically hexadecimal


and binary. Machine language is also specific to a processor. Processor families understand a
common machine language, so code written for x86 or x86_64 processors will run on any processor
that is part of that family.

PROGRAMMING: Assembly code is not portable across processor families. For example, code
written for the x86 processor family will not run on processors such as SUN Sparc, IBM 370, and
ARM Cortex.
The x86/x86_64 processor family includes Intel processors such as Pentium, Core-Duo, and Core
i7, and AMD processors such as Athlon, Phenom, and Opteron. Both Intel and AMD implement the
x86 instruction set as part of their processor design, but the processor design techniques used to
implement the instruction set, also known as the microarchitecture, are very different.

Figure 1.4 File and utility relationships

File and Utility Relationships


Considering file and utility relationships in relation to the translation pipeline is also helpful. Figure
1.4 illustrates the language levels in relation to files, and also the role of computer utilities that
translate one language into another.
The role of a compiler is to translate high-level source code into the intermediate form of
Assembly based on the processor’s instruction set. The role of the assembler is to encode Assembly
code into object code, which is relocatable machine language formatted for a specific operating
system (OS) platform. Table 1.2 lists common object file formats by OS platform. The role of the
linker is to combine multiple object files and static libraries into a single executable file. The role of
the loader is to take the executable instructions contained in the executable file produced by the
linker, along with dynamic libraries, and load the machine code into memory for execution by the
central processing unit (CPU).
PROGRAMMING: What do we mean by “relocatable” machine language? When Assembly code
is assembled into object code, the code is in a generic form with the first instruction starting at
address 0x0h and subsequent instruction addresses are offsets based on the preceding instructions’
sizes in bytes. When the program is actually loaded into memory, the first instruction will have a
legitimate address, with the subsequent instruction addresses based on the offsets.

Table 1.2 Common object file formats by OS platform

Windows macOS Linux

COFF, PE, Win32, Win64 Mach-o ELF, a.out (deprecated)

Why Assembly?
An important and reasonable question that we must ask and answer is “Why learn Assembly?” What
is the benefit of knowing low-level details if we can write code in high-level languages? The answer
to these questions is multifaceted.
• Learning Assembly will enhance your understanding of computer operation. Assembly is a
mechanism by which a programmer can learn details of computer hardware, CPU components,
memory organization, and the interactions among these elements of computer architecture.
• Programmers make extensive use of a debugger, a utility for troubleshooting code, when
writing programs. Debuggers provide Assembly, disassembly, register, and memory
information so that the programmer can step through programs at a low level. Understanding
Assembly language and computer architecture will help with identifying and fixing code bugs.
• Knowledge of Assembly and computer operation helps a programmer make informed decisions
about implementation at high and low levels. A programmer can take advantage of the
hardware and optimize for efficiency.
• Knowledge of Assembly removes layers of abstraction from tasks such as bit manipulation and
function (procedure) calls.
• Some areas of software development rely on intimate knowledge of Assembly, such as
programming for embedded devices, programming device drivers, and system (OS)
programming.
Learning Assembly will give you a fuller understanding of how computers operate and how code
executes, which you can use to your advantage. Additionally, from the vantage point of an engineer
there is nothing quite as satisfying as talking directly to the processor.

LEARNING: Refer to the BUBBLE SORT EXAMPLE at the end of the chapter to consider
differences in file sizes and memory footprint for comparable programs written in Assembly and
C++.

Data Representation
Number Systems
Most computers operate physically in binary form. For example, a memory cell is either charged or
not charged, a location on disk is magnetized or not magnetized, a transistor in a CPU is either
allowing current flow or not allowing current flow. Therefore, binary (1s and 0s) is used to represent
data at the lowest level. However, binary is typically difficult for humans to interpret quickly, so
other number systems serve as shorthand representations of binary.

LEARNING: Fundamentally, binary is the only number system a computer understands with regard
to execution of machine language. So why is binary the number system of computing?
Answer: The reliability of binary representation and bi-stable environments.
Physical characteristics of binary hardware components:
• The component has two stable energy states, representing 0 and 1. Examples: full on/full
off, fully charged/fully discharged, positively charged/negatively charged, magnetized/non-
magnetized, reflects light/does not reflect light;
• The two states are separated by an energy barrier (they cannot become each other or be
confused);
• Possible to sense the state of the component;
• Possible to switch between the states.

Imagine the complexity of storing a value in a computer based on the decimal or hexadecimal
system. A component would have to be able to represent 10 or 16 different states. Using two states
makes it much easier to represent physical properties, which in a typical computer are electrical.

Reading and writing low-level code requires programmers to be adept at number systems and
formats. The most common formats are binary, octal, decimal, and hexadecimal. Each number system
has a base, which indicates the number of symbols available for a digit. Table 1.3 shows details of
common number systems. Decimal and hexadecimal are the most common number system formats
used in Assembly code.

Table 1.3 Number systems

Number System Base Digits

Binary 2 01

Octal 8 01234567

Decimal 10 0123456789

Hexadecimal 16 0123456789ABCD EF

Integer Storage
To programmers, the binary number system means 0/1 or false/true. A binary digit is a bit. Bits are
combined into bytes to store data like integer (whole number) values. Table 1.4 presents the bits,
bytes, terms, and ranges associated with unsigned and signed integer storage. Unsigned means only
positive integers are represented, while signed means positive and negative integers are represented.

Table 1.4 Integer storage sizes

Bits Bytes Term Unsigned range Signed range

8 bits 1 byte byte 0 to 28 – 1 -27 to 27 – 1

16 bits 2 bytes word 0 to 216 – 1 -215 to 215 – 1

32 bits 4 bytes doubleword 0 to 232 – 1 -231 to 231 – 1

64 bits 8 bytes quadword 0 to 264 – 1 -263 to 263 – 1

80 bits 10 bytes tenbyte 0 to 280 – 1 -279 to 279 – 1

128 bits 16 bytes double quadword 0 to 2128 – 1 -2127 to 2127 – 1

When multiple bits are combined, the leftmost bit is the most significant bit (MSB) and the rightmost
bit is the least significant bit (LSB). In the 1-byte example below, if the LSB (bit 0) is changed the
value is only altered by 1, but if the MSB (bit 7) is changed the value is altered by 128.
Unsigned Integer Storage
Two useful skills when dealing with number systems is the ability to convert between systems and the
ability to perform basic arithmetic like addition. Table 1.5 shows unsigned integer equivalents in
decimal, binary, and hexadecimal.

Table 1.5 Number system unsigned equivalents

Decimal Hex Binary

0 0 0000

1 1 0001

2 2 0010

3 3 0011

4 4 0100

5 5 0101

6 6 0110

7 7 0111

8 8 1000

9 9 1001

10 A 1010

11 B 1011

12 C 1100

13 D 1101

14 E 1110

15 F 1111

The following nine examples demonstrate ways to perform a variety of unsigned conversions and
additions:

1. Binary ↔ decimal: using a scale of 2n, where n = bits -1


2. Binary → decimal: using positional notation
3. Decimal → binary: using division
4. Calculating number of bits for a decimal value
5. Binary addition
6. Hexadecimal ↔ binary ↔ decimal
7. Hexadecimal → decimal: using positional notation
8. Decimal → hexadecimal: using division
9. Hexadecimal addition

ATTENTION: Decimal values can be converted to any other base in one of the following ways:
• Scale of basen (see Examples 1.3 and 1.8)
• Positional notation: decimal = (D(n-1) × B(n-1)) + (D(n-2) × B(n-2)) + … + (D1 × B1 )+(D0 × B0)
where B = base, D = digit, and n = number of digits (see Examples 1.4 and 1.9)
• Division (see Examples 1.5 and 1.10)

In Example 1.3, we show how to convert an 8-bit value between binary and decimal using a Base
2 scale. The conversion is 000101112 = 2310. Essentially, you add up the decimal values based on the
scale where a 1 exists in the binary sequence.

Example 1.3 Binary ↔ decimal (scale 2n)

In Example 1.4, we show how to convert from binary to decimal using positional notation. The
conversion is 000101112 = 2310.

Example 1.4 Binary → decimal (positional notation)

In Example 1.5, we show how to convert from decimal to binary using division. The conversion
is 4210 = 1010102. First, divide the decimal number (42) by the base (2), which results in a quotient
of 21 and a remainder of 0. Place the remainder (0) out to the right. The first remainder is the LSB.
Then, keep dividing the quotient by the base until nothing is left, placing the remainder to the right
after every division. The quotient of the final division (which will be a 0 or 1) is the MSB. The
binary sequence is constructed by concatenating the values in reverse order starting with the final
quotient as the MSB and the first remainder as the LSB.
Example 1.5 Decimal → binary (division)

In Example 1.6, we show how to calculate the number of bits needed to store a given decimal
value. For example, the value 4210 needs 6 bits of storage.

Example 1.6 Calculating bits for a decimal value

LEARNING: When calculating the number of bits needed to store a decimal value, you may be
tempted to use bits = ceiling(log2n), which would work for most values (like Example 1.6).
However, ceiling will result in an incorrect value when n is a power of 2, like the value 3210. So,
ceiling(log2 32 ) = 5 bits, which is incorrect. We would need 6 bits to store 3210, which is
1000002.

In Example 1.7, we show binary addition. The rules are simple.

0+0=0 0 + 1 or 1 + 0 = 1 1 + 1 = 0, carry the 1 1 + 1 + 1 = 1, carry the 1


Example 1.7 Binary addition

In Example 1.8, we show how to convert between hexadecimal, binary, and decimal.
Hexadecimal to binary is based on the rule that each hexadecimal digit is comprised of four bits. The
hexadecimal to decimal conversion can be accomplished using a Base 16 scale of 16n (like Example
1.3). The conversion is 00011010101101112 = 683910 = 1AB716.

Example 1.8 Hex ↔ binary ↔ decimal

In Example 1.9, we show how to convert from hexadecimal to decimal using positional notation.
The conversion is 1AB716 = 683910.

Example 1.9 Hexadecimal decimal (positional notation)

In Example 1.10, we show how to convert from decimal to hexadecimal using division. The
conversion is 803910 = 01F6716. The process is exactly the same as in Example 1.5, except we divide
by 16.
Exploring the Variety of Random
Documents with Different Content
The whole house, its innumerable corridors, its foyers and
promenades, the walls of the auditorium, the ceiling, the capitals of
the columns that support the dome, the dome itself—every inch of
the whole is dominated by a single decorative motif, a very shoddy,
cheap motif. This is a pendant, stalactite arch, borrowed from the
Moorish architecture of Spain, and reduced to the lowest terms of
mechanical rudeness. The theater is of concrete and stucco, and this
dull shape is repeated endlessly and tediously, as if it had been
scalloped out by a machine. Only in the dome, or when it is no more
than hinted at in certain wall surfaces, does this shape do anything
but bore and depress. On top of this, Poelzig had stained the walls of
many corridors and rooms in a yawping red, and turned the main
foyer into a ghastly sea-green cavern. The theater is nervous,
horrific, clangorous, glowering. There is nothing fountain-like. No
spirit wells up in beauty. There is no dignity and no glory.
The fault may not be Poelzig’s, but the lighting of the stage and
orchestra seems unfortunately handled. Some of the lights for the
inner stage are placed in front of the arch of the proscenium instead
of behind it, and thus they illuminate it, and emphasize something
that ought not to be there at all, let alone pointed out. The lights for
the orchestra originally came wholly from the lower edge of the
dome. It was necessary, however, to supply more, and they have
been placed in an ugly red hood, which sticks out from the
proscenium with no relation to the rest of the house. The lights in the
dome stab with a glorious brilliance; the great beams seem to
descend unendingly before they reach the tiny figures of the actors,
and spot them out of the darkness. But these lights make the first
mistake of trying to hide themselves, and the second mistake of not
succeeding in doing so. How much better it would be if they were
treated frankly as part of the theater; if their source were admitted; if
these lamps were hung in great formal chandeliers made a part of
the decorative design of the production. For Romain Rolland’s
Danton the astute Ernst Stern hung huge lanterns over the scene of
the revolutionary tribunal; it was a method that should have been
perpetuated.
The productions that Reinhardt made are no longer to be seen in
the Grosses Schauspielhaus, for repertory vanished from his
theaters along with Reinhardt. You hear, however, of many
interesting and beautiful things in Danton, in Œdipus, in Hamlet, in
Julius Cæsar, in Hauptmann’s Florian Geyer. But you see no such
things now, or at least we did not see them when we were in Berlin.
We saw the orchestra filled with seats—perhaps to swell the meager
seating capacity of three thousand which was all Poelzig could
include after he had wasted front space on rows of boxes and wide-
spaced chairs, and perhaps because the new directors feared to use
that glorious and terrible playing floor. We saw the forestage shrunk
to a platform jutting out perhaps twenty feet. We saw a tedious
performance of Die Versunkene Glocke, with the action shoved into
the realistic proscenium, with the scenic artist fooling about with
sloppily expressionist forms, and with the mountain spirit hopping
down the hillside with a resounding wooden thump. We saw
Hebbel’s Judith done with much more effectiveness, though without
real daring or vision.
The Inner Stage of the Grosses Schauspielhaus as set for the gates
of Holofernes’ palace. Designed by Ernst Schütte.

Judith, however, shows some of the possibilities of such a theater.


The beginning strikes in on the imagination with the impact of the
shaft of light that beats down on Holofernes, sitting like some idol on
his throne. Though he is almost back to the curtain line, instead of
out in the midst of the people, he drives home the effect of seeing life
in the round which such a theater can give. Here is talking sculpture.
The costumer, as well as the actor, is given a new problem: the
problem of clothes and the body that, like a statue, must mean
something from every angle, must have beauty and significance from
the back as much as from the front. The costume of Holofernes, at
least, achieved this. The actor has another problem, the problem of a
different movement and a different speech, movement slower and
grander, or else long and swift, speech that is more sonorous, more
elaborately spaced. The actor’s part—in spite of rather second-rate
players—is the part best done at the Grosses Schauspielhaus.
There is a natural aptitude in the German player for the grand, slow
speech, the roaring tempest. It is like the aptitude of the German
people for the grand slow play. They like drive, rather than speed.
They want to hear dull sonorous platitudes driven out by sheer belly-
muscle.
There is one thing very beautiful in Judith and in this theater. It is
the way a player can come forward to the edge of the forestage, and
stand there alone, stabbed at by a great white light, surrounded first
by emptiness, and beyond that by crowds, a brave figure alone in a
great dim space. That is something you cannot feel in the chummy
confines of a picture-frame.
The Grosses Schauspielhaus is a gigantic failure if you look at it
with vision—and also a great portent. The place is ugly, and its
purpose now debased, yet it hints at how beautiful a great, formal
theater could be, how moving and inspiring its drama. Even in the
wreckage, the idea still lives.
And if you try to bring a little of that same vision to the spectacle of
the man who made this failure, and who ran away, you cannot deny
an admiration for the courage to give up, to admit defeat, and then to
go to the church, and to try to do there, in the sanctified birthplace of
the modern theater, something to lift the spirit as high as the theater
of the five thousand was to have lifted it.
CHAPTER XIV
THE THEATER OF THE THREE HUNDRED

S IZE is no mania with the French. They do not insist on buildings


that are taller than those of any other nation, an empire that is
larger, ambitions and dreams mightier and more terrible. So perhaps
it was only natural that when a Frenchman wanted to present actors
in a new relationship to their audience, he should choose for his
theater a little hall in the Street of the Old Dovecot instead of a circus
or a park.
Doubtless there were many reasons why Jacques Copeau’s
theater had to be small. A potent one may have been economy, a
thing that accounts for the little theater movement far more than any
theories of intimacy. The question of repertory also may have had
weight. There are many sizes of drama, and there are special
repertories for special theaters; but many more plays are possible for
a theater of five hundred seats than for a theater of five thousand.
The Trojan Women can be played to one hundred and twenty-nine
people in the Toy Theater of Boston, as Maurice Browne proved; but
Le Misanthrope is impossible in the Yale Bowl.
Copeau’s theater had to be small, not only because he had little
money and a great love of all sorts of plays, but also because—and
this counted more than even the French liking for the moderate and
the exact—the thing he was interested in was the actor and not a
grandiose idea. He ended by creating the first presentational
playhouse in the modern world, by maintaining for a long time the
most radical, and by achieving after some years the most successful.
But he began by looking for some place for his actors to act. They
were to be a company of fresh, sensitive, intelligent spirits bringing
an intense and honest art to those who might care for it. Copeau had
found his actors in all manner of places besides the routine theaters.
He had talked to them about everything but make-up, curtain calls,
and how to be natural on the stage. He had played with them and
worked with them in the country, rehearsing the first pieces of the
repertory in a barn. He did not intend to dump them down into one of
the ordinary theaters of Paris. Copeau proposed to take the hall that
his resources permitted, and to make it over to suit the spirit of his
company. He could build no ideal theater, but he could make one in
which his actors would escape the realisms and the pretenses of the
modern theater, and would play to and with the audience as their
spirit demanded.
And so we have the Théâter du Vieux-Colombier. It is not at all like
the hideous theater-hall that was there before. It is not quite as it was
when Copeau closed his first season before the war. It is not in the
least like the Garrick Theater, which he remade in New York in 1917;
as a matter of fact it is not so good. It is not very charming in its
shape or its decorations, and Copeau is as careless as Reinhardt
about things like good painting and clean walls. But this Vieux-
Colombier is a distinguished and a jolly place all the same, the
happiest and the healthiest theater west of Vienna.
It is hard to know where to begin a description of this curious
playhouse. Suppose you had never been to the Vieux-Colombier, but
suppose you knew that this was a theater without the illusion of
Realism, and suppose you sought for the thing that would tell you
this the quickest. What would you see? Probably the steps that lead
from the stage to the forestage, and even from the forestage to the
seats of the audience. There are no footlights, and so you have the
pleasure of seeing the square, firm edge where the stage floor ends.
This edge bends into a large curve in the middle, with three curved
steps below, and it angles out at the sides to where smaller steps
join those of the middle on an ample forestage. These steps and the
edge of the stage do more than any one thing in the theater to signal
that you are not looking into a picture-frame. Even when they are not
used, as in Les Frères Karamazov, these steps keep you warily alive
to that fact.
When you examine the theater more closely you discover that
there is no proscenium. The nearest thing to it is the last of the
arches which hold up the roof of the auditorium. There is a curtain, to
be sure, but it does not fall behind pillars, and it does not cover the
forestage. It descends at that point where the walls of the auditorium
become the walls of the stage, and it merely serves to hide one end
of this long room while the stage hands make small changes in the
permanent setting.
The permanent setting, like the theater itself, is an experimental
product of the attempt to provide what the actors need. It is really no
more than a balcony placed against the back wall, with an arched
opening in the middle, and with walls at the sides that let the actors,
who have gone out through the arch, get off stage unseen. This
balcony is so solidly built that it cannot be taken out, but certain
portions are alterable. The changes in setting are managed by
changing the width of the arch or the line of the top of the balcony, by
adding doors, steps at one side, or railings, and particularly by
placing significant properties or screens upon the stage. Louis
Jouvet, stage director as well as Copeau’s best actor, has done
many ingenious things to make his settings varied enough and
characteristic enough without losing the permanent thing that is
common to them all, and that aids in banishing realistic illusion. A
detail that shows the working of his mind is to be found in the
screens that he uses to create a room in Les Frères Karamazov; by
giving them two or three inches of thickness and a certain amount of
molding, he has escaped the impression of the bare, the
unsubstantial, and the untheatrical which the screens of other
designers produce.
Les Frères Karamazov: the Gypsy Inn. This sketch and the following
one show the permanent skeleton-setting of Copeau’s Théâtre du
Vieux-Colombier in Paris. Here, in an arrangement of paneled screens
Louis Jouvet has caught the mood of the scene without reference to
details of “atmosphere.”

The balcony is a most useful feature. It was not accident that put a
balcony in the Elizabethan theater or made the Greeks use the
theologium. It serves a practical purpose, of course, in any scheme
of permanent setting, for it makes it unnecessary to build balconies
for scenes that especially call for them. A good deal more important
to the director is the movement up and down, as well as sideways
and back and forth, which it gives him. With the forestage, the main
stage, and the balcony, Copeau has almost as useful a base for
composing action in three dimensions as Jessner has in the steps
which he uses in various productions in Berlin.
Sheldon Cheney has called Copeau’s stage a “naked stage.” It is
a happy accident of language that, when you call it a concrete stage,
you describe the material of which it is made and the feeling of
sharp, definite statement which resides in everything done upon it.
The wall at the right of the audience is solid, the wall at the back, too;
the ceiling of the stage has some openings between steel girders,
but it is more like the floor than the “flies” of the average theater.
Only in the left wall of the stage are there any openings. Through
these the actors manage to exit into the next building. The floor of
the stage, except at the edges, is even more adamant. It will not
yield to pleas for atmosphere, illusion or any of the gewgaws of our
theater. It is solid concrete. Copeau wanted to give the actor’s feet a
sense of support which they cannot get from yielding and resounding
wood. At the sides is a small section in timber which permits the use
of a stairway to a lower room as in The S. S. Tenacity or Les Frères
Karamazov. In the forestage are two other openings, covered by
wooden and concrete slabs.
Jouvet’s lighting system is ingenious and philosophically sound, if
not altogether perfect. Practically all the light comes from four large
lamps hung in the auditorium. They replace footlights, borderlights,
and floods from the sides. Illumination from the auditorium itself is
essential to good stage lighting; the footlights are an unhappy
makeshift. David Belasco very wisely uses a battery of lamps hidden
in the face of the first balcony. In German theaters, the huge 6000-
candlepower bulbs developed since the war, tempt directors to
inefficient and distracting lighting from the ventilator above the main
chandelier in the roof of the auditorium. Neither the latter method nor
Belasco’s is wholly satisfactory in a theater that forswears
representation, a theater like the Grosses Schauspielhaus or the
Vieux-Colombier or the Redoutensaal in Vienna. Electric light on the
stage begins as an imitation of the real. If a table is illuminated by a
large light in the first border, there must be a lamp above the table in
such a position as to suggest that it is doing all the work. The next
step is to use light for illumination and composition—for beauty, in
fact—without bothering to try to make it seem to come from some
natural source in the setting. When such light comes from the
auditorium we may get composition, but we also get a throw-back to
the source of the light itself. The ray carries our eye up to some lens-
lamp trying unsuccessfully to hide in the bottom of the dome of the
Grosses Schauspielhaus, or in the top of the ceiling of the
Burgtheater. A new problem arises. It should be answered by making
the source frankly visible. The hoods themselves of large bulbs have
a shape that would make them interesting and not without
significance in the Grosses Schauspielhaus; or a new shape could
be supplied to harmonize with architecture or setting. In the
Redoutensaal we find glorious old crystal chandeliers lighting the
stage—an accidental result of the fact that the Viennese government
converted Maria Theresa’s ballroom into a playhouse. In the Vieux-
Colombier Jouvet makes no bones about admitting where his light is
coming from. He places the bulbs in octagonal lanterns, which, by
revolving on an axis, present different colored sides for the light to
pass through; the lanterns may also be moved in such directions as
to throw the light upon any desired part of the stage. These lanterns
are frankly visible; and, though they are not a pleasing shape, they fit
esthetically with the theory of this theater. Here is electric lighting
presented at last as the thing it really is, not as an imitation of
something else.
The greatest faults of the Vieux-Colombier over which Copeau had
control, and which he could easily have avoided, lie in the color and
quality of painting on the stage. The concrete and the cream of the
auditorium take warm lights; but in portions of the stage itself,
Copeau has used a cold gray that is surely unfortunate. Much that
you see is shoddy. If the paint chips off a corner, nobody bothers to
replace it. Rivet heads and structural iron show when they have no
relation to the shapes on the stage. Now it is a good thing not to
spend too much energy on the physical side of the theater, but there
is a difference between austerity and slovenliness.
Actual productions, animated by the actors and graced with some
of Jouvet’s scenic arrangements, do a great deal to make the stage
wholly attractive. The S. S. Tenacity, a realistic play with a French
café for its setting, makes interesting demands on this non-realistic
stage. The demands are met, and met successfully. There is a
counter at one side with racks for bottles, a wooden door in the arch
at the back, a table in the center, and above it—the mark of Realism
—a shaded lamp, from which a great deal of the stage light comes.
With the actors giving us the sense of French life which was missing
in the New York and Viennese productions, we have here a
performance which might almost be enclosed in a proscenium frame.
But there is in the acting, as in the setting, much that is non-realistic,
much that seems representational only by contrast with the
dominating spirit and physique of the theater and its people.
In the playlet that goes with The S. S. Tenacity, Mérimée’s Le
Carrosse du St.-Sacrement, we are back in a piece from the
romantic period, a comedy of clear and artificial vigor. A screen and
some hangings with a southern flash to them set the stage for
eighteenth-century Peru. Copeau himself has the same Punch-like
visage that he presents to you in his own study, but now he manages
to make you think him a Spanish puppet, an exasperated and wily
doll. The same Punch appears in Les Frères Karamazov, but a
Punch of the intellect, a tragic marionette dangling on the strings of
rationalism. At the end, when Ivan goes mad, you may see most
clearly the subtle exaggeration which is at the heart of the acting of
Copeau’s company. The whirling body, the legs that beat a crazy
tattoo on the floor, the twisting head and the boggling eyes, are none
of them copied from a candidate for the asylum. They are all an
explanation of what sort of lines in the figure of a crazy man would
strike the imagination, what angles and movements would most
sharply indicate lunacy.
Karamazov is effectively composed on this stage by a few
draperies for the first scene, a line of curtains hiding the whole stage
and begging the question in the second scene, a flight of steps for
the hall of the Karamazovs, and two heavy screens for the inn. There
is nothing so fine as the interminable steps that lead up from the
balcony at the Garrick to the wretched room of Smerdiakov; but
there is enough improvement in the very excellent acting seen in
New York, to make up for this. Jouvet’s father is gigantically good;
set beside his Aguecheek, it puts this young man among the most
interesting actors of Europe. Paul Œttly, as the eldest brother, plays
the striking scene in the inn of the gypsies with uncommon vigor, and
the stage direction sweeps the scene along to a burning climax. The
intensity of the actors in this play, added to the intensity of the play
itself, demonstrates how completely a formal theater of this kind, and
a type of acting which is a reasoned sort of explanation, rather than
a thing of life or of acting, can stand up beside the Realism of our
directors when it is at its best.

La Carrosse du Saint-Sacrement at the Vieux-Colombier: another


arrangement of Copeau’s permanent setting.

In Twelfth Night you find the company clear out of the shackles of
realistic or semi-realistic plays, and happy in the beautiful playhouse
of fantasy. And here the quality of exposition—which you may trace
back to Copeau’s profession of critic, and forward through the days
given to the reading and study and analysis of each new play—has
almost altogether disappeared. The playing is spontaneous, or it is
nothing. Suzanne Bing’s Viola is a-quiver with radiance and wonder.
Jean Le Goff’s Orsino is no such God-favored performance, but his
eyes are lit with an ecstasy of love-sickness. The comedians are far
from Englishmen; but their creations are immensely funny: Jouvet’s
gently gawking Aguecheek, Romain Bouquet’s shaven-headed,
almost Oriental Sir Toby, Robert Allard’s extraordinary clown, the
finest either of us had ever seen. It is interesting, for once, to see
Malvolio put in his place as a character, and not given the star’s
spotlight to preen in; it might be a more satisfactory arrangement if
Albert Savry could be funnier in his dry Puritanism.
Twelfth Night triumphs at the Vieux-Colombier by virtue of the spirit
of the actors, and the vision of the director. The costuming is bad—
an unsuccessful attempt to make Illyria, as it might well be, a land of
no time or place but Poetry; and the setting is no more than bright
and freakish in a Greenwich Village way. But in the costumes and up
and down the setting these players frisk, weaving patterns of beauty
and fun that link them into the true spirit of the play. The curtain is
there at convenient times to make the forestage into a neutral zone
for duke or sea captain, and between this forestage and the
balconied space behind there is room for all of Shakespeare’s play
to race along just as he wrote it. With the trap door in the forestage
to act as cellar, Malvolio can be incarcerated below-stairs and
happily out of sight—much as Shakespeare intended.
Copeau is a believer in gymnastics. (He is also a believer in
improvisation, a school of playwrights, and other things whose
absence makes him grow impatient with his theater). Through
months and years of strenuous labor, he is training half a dozen
young people of his own school to have bodies that are as well
under control as a gymnast’s. The performances of the Vieux-
Colombier draw on players not so well trained, but they show what
physical command can accomplish. Here you see acting that makes
you think again of sculpture and its relation to the new theater.
Copeau’s people can meet the test which the theater with a Greek
orchestra, like the Grosses Schauspielhaus, exacts. They can play
“in the round.” Their bodies can be seen from all sides, and still keep
expressiveness and beauty. They have learned to master their
bodies, as well as their voices, and they are able to make the lines of
arms and torsos and knees speak directly to the audience. When
Jouvet sharply underlines and almost caricatures the salient shape
of old Karamazov he is able to escape from ordinary representation,
which may or may not make its point, and he is able to push his
conception of the wicked, vital old man into almost direct physical
contact with the audience. I have often wondered when the actor
would learn the lesson of sculpture. There were centuries of almost
literal representation, with the inner expression of the artist and the
artist’s sense of Form struggling furiously to impose itself upon
Reality, and failing more often than succeeding. Then, with Rodin
came the sense that sculpture could make representation a distinctly
secondary matter. There could be expression first, and resemblance
afterwards, if at all. Idea, which is one sort of Form, enters the clay
with Stanislas Szukalsky. Expression and idea, poised in the human
body, begin to inform acting directly and openly in the company of
the Vieux-Colombier. The first presentational theater adds the
medium of the body to the medium of the voice.
CHAPTER XV
THE REDOUTENSAAL—A PLAYHOUSE OF PERMANENCE

I N Vienna on Christmas Day, 1921, there were no matches in the


match-stands of the cafés and no paper in the hotel writing rooms.
Some of the well-to-do and the recklessly soft-hearted had begun to
feel that they could afford to keep pet dogs again; but there were no
silk stockings on those most un-Teuton ankles that paraded the
Burgring. You may guess, therefore, that there was no butter on the
tables of the middle classes, and no milk in the houses of those who,
by a curious clairvoyance of language, are called the working
people.
Two nights later three or four hundred citizens, with bits of bread
and meat wrapped in paper and stowed in their pockets, could be
seen seated in a great and splendid ballroom of Maria Theresa’s
palace, under the light of crystal chandeliers and the glow of
priceless Gobelins, watching the first performance, The Marriage of
Figaro, in a theater a stride ahead of any in Europe.
They had paid good money at one of the doors of that
extraordinary old building, the Hofburg, which rambles from the
Opera to the Burgtheater half across the shopping district of Vienna.
After they had parted from two or three thousand crowns apiece,
they had wound up stone stairways between white walls and twists
of old ironwork, passed through cloakrooms where princesses once
left their wraps, and a supper room where artists may cheerfully go
mad over molding, pediment and mirror, and reached at last the
Theater in dem Redoutensaal. They found one of the handsomest
baroque rooms in Europe holding within its beauty both a stage and
an auditorium. A row of Gobelin tapestries filled the lower reaches of
the walls. Above were moldings and pilasters, cornices and
pargeting, spandrels and pediments, fillets and panelling, an ordered
richness of ornament that held suspended in its gray and golden
haze mirrors that echoed beauty, and chandeliers radiant with light.
At one end of the room, beneath great doors and a balcony which
the architect had planned in 1744, was a new structure; it broke the
line of the Gobelins, but continued the panelling, freshened to cream
and gold, in a curving wall across a platform and in double stairs
leading to the balcony. With man’s unfailing instinct for the essence
of life, the audience promptly identified this roofless shell as a stage.
There was a platform, of course, but there was no proscenium.
There were doors and windows in the curving wall, but no
woodwings, borders, flats, or backdrops. There was even a
something along the front of the platform which might conceal
footlights, but there was nothing to be seen that looked more like
scenery than a row of screens.
Such is the room in which the forces of the Austrian State Opera
House have been giving The Marriage of Figaro and The Barber of
Seville, and in which Reinhardt began late in 1922 the most
interesting experiment of his most experimental life—the
presentation of plays under a unique condition of theatrical intimacy
between actor and audience.
It is an odd spectacle, this of Vienna, the bankrupt, going
lightheartedly out on the most advanced experiment in production
yet attempted in Europe. One of its oddest angles is that the man
who made an empress’s ballroom over into a theater is a socialist—
President Vetter of the Staatstheaterverwaltung, the bureau under
the republic which controls the State playhouses. The conversion
was not an easy matter. Opponents rose up inside the State theaters
and outside them. Vienna was engaged for months upon one of
those artistic quarrels from which it is always drawing new health
and spirit.
The Redoutensaal in Vienna as arranged for the first scene of The
Marriage of Figaro. The room called for in the text is indicated by a
row of crimson screens set straight across the stage and pierced in
the center by a door. In the scheme of production indicated by this
unique environment such a mere indication is sufficient to establish
setting and mood.

When President Vetter had won his point he plunged briskly ahead
at the work of making over the ballroom into a very special kind of
theater without marring its beauty. Part of the old balcony came out,
mirrors replaced doors and windows down the sides of the hall, and
Oberbaurat Sebastien Heinrich set to work on the problem of
creating a permanent architectural setting for the stage which should
harmonize with the lovely room, yet stand out from it significantly
enough to center attention on the acting space. Meantime President
Vetter took another look at the Gobelins which had satisfied Maria
Theresa, and decided that they weren’t quite good enough; others
had to be found. Even now he is a little doubtful about those on the
right hand wall.
The work of the Oberbaurat is admirable. He has continued the
molding above the Gobelins, and made it the top of the curving wall
which is the background for the stage. This shell is broken at each
side by a casement, which holds either a door or a window, and two
masked openings. Through one of these, close to the front of the
stage, a curtain the height of the wall is run out to hide changes in
the screens and furniture upon the stage. At the back, where the
shell curves close to the old balcony of the ballroom, the State
architect has placed a pair of graceful steps, which meet at the top,
and provide, underneath, an exit to the rear. For lighting, there are
the foots in their unobtrusive trough, and small floods placed in the
gap where the curtain moves; but by far the larger part of the
illumination comes from the seven chandeliers in the ceiling of the
hall. The chandeliers towards the rear are sometimes turned half
down or even off, but essentially it is the same light which illumines
both players and audience.
This light and the formal and permanent character of the stage
stamp the Redoutensaal with a character as old as it is fresh. This
theater goes beyond Copeau’s Vieux-Colombier in the attempt to re-
establish in our century that active relationship between actor and
spectator which existed in the great theaters of other centuries, and
towards which the finest minds of the theater have been striving.
Here is a stage freed from all the associations of modern stage-
setting, innocent of machinery or illusions, essentially theatrical.
Actors must be actors upon its boards. They cannot try to represent
actual people; they can only present themselves to the audience as
artists who will give them a vision of reality.
This is comparatively easy in opera. There is no realistic illusion
about a valet who sings a soliloquy on his master’s more intimate
habits. People who quarrel in verse to a merry tune are most unlikely
to be mistaken for the neighbors next door. With music and the stage
of the Redoutensaal to aid them, the singers of the State Opera
manage to give a roughly presentational performance. In direction
there is nothing notable to be seen, unless it is the wedding scene of
Figaro with the Count striding up and down across the front of the
stage, opposed in figure and in action to the plaguing women above
upon the stairs. The acting possibilities of this stage, however, are
very great. Reinhardt saw them vividly in the summer of 1922, while
he was making preparations for his five productions in September:
Turandot by Gozzi, Stella and Clavigor by Goethe, Le Misanthrope
by Molière, and Dame Cobalt by Calderon. He saw the possibilities
and the difficulties of acting also, and he rejoiced that he was to have
old and tried associates like Moissi, Pallenberg and Krauss with him
once more when he began his experiment with a theater far more
exacting than the Grosses Schauspielhaus, and a technique of
acting very hard to regain after so many years of Realism.
So far as there must be indications of time and place upon this
stage, a beginning in experiment has been made. It has not been a
particularly good beginning, but it shows the opportunities for the
artist, and also the limitations. They are very nearly identical. It is the
business of the scene designer who works here to draw from the
Redoutensaal itself the motifs and colors which he shall add to the
permanent setting. It is his privilege, using only these things, to give
the scene just the fillip of interest which the play demands.
Alfred Roller, a veteran of the scenic revolt of fifteen years ago,
and, next to Reinhardt’s artist, Ernst Stern, the most distinguished
German scenic designer of his time, has made the screens and set
pieces for The Marriage of Figaro and The Barber of Seville. There is
little or no good to be said of his work in the latter piece. The screens
with which he indicates a room in the first act, and the bulky gate
which he sets down across the stairs in the second act, are bad as to
color, and quite at odds with the Redoutensaal. Obviously he could
have made so much more amusing a gate out of the permanent
stairs, and given his scene a Spanish stamp by a circle of vivid, tight-
packed flowers in the center. The Marriage of Figaro is much better,
though here again Roller could have done far better if he had turned
his eyes up to the walls above him. The first scene, the servant’s
room, is made by a row of antique screens of faded crimson placed
well down stage. Through a door in the central one, you see green
screens, which, in the second scene are to define the room of the
wife. With an excellent sense of climax, Roller proceeds from the
shallow stage of the first scene to the deeper stage of the second,
and finally sweeps in the whole permanent setting for the wedding in
the third scene. More than that, he calls the stairs and balcony into
play, and finally opens the great doors above the balcony to let us
see beyond to a room of crimson hangings and more crystal. The
last scene, the garden, is shoddily conceived, with a few
uninteresting potted trees, a bad painting of Schönbrunn in the exit
under the steps, and a sickly attempt at moonlight from the
floodlights and foots. Why not, you wonder, delicate, artificial, gilded
hedges along the walls, and fruit trees flattened on espaliers against
the steps?
Unquestionably the lighting problem in the Redoutensaal is not yet
solved. Reinhardt looks to solve it with a large light or two concealed
in the forward chandeliers. This may make the illumination of the
stage a little more flexible and expressive; but it is quite as likely that
the way to light the stage is without the least pretense at illusion. At
any rate footlights and lights from the side are distressing reminders
of the conventional theater.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like