0% found this document useful (0 votes)
59 views19 pages

L1 - Instructions - Intro - Operations - Operands of The Computer

This document discusses the basic operations and instruction sets of computer hardware languages. It begins by explaining that all computers must provide a basic set of operations like addition and that instruction sets aim to make hardware implementation and performance maximization simple and regular. It then examines the ARM assembly language instruction set in more detail, focusing on its use of registers and memory addressing to perform operations on variables and data. Key points covered include the fixed three-operand structure of ARM instructions and the role of compilers in mapping high-level operations to sequences of low-level machine instructions.

Uploaded by

Hari Kalyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views19 pages

L1 - Instructions - Intro - Operations - Operands of The Computer

This document discusses the basic operations and instruction sets of computer hardware languages. It begins by explaining that all computers must provide a basic set of operations like addition and that instruction sets aim to make hardware implementation and performance maximization simple and regular. It then examines the ARM assembly language instruction set in more detail, focusing on its use of registers and memory addressing to perform operations on variables and data. Key points covered include the fixed three-operand structure of ARM instructions and the role of compilers in mapping high-level operations to sequences of low-level machine instructions.

Uploaded by

Hari Kalyan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

INSTRUCTIONS: LANGUAGE OF

THE COMPUTER
INTRODUCTION
 To command a computer’s hardware, one must speak its language
 The words of a computer’s language are called instructions, and its
vocabulary is called an instruction set
 The languages of computers would be as diverse as those of people
 In reality computer languages are quite similar
 This similarity occurs because all computers are constructed from
hardware technologies based on similar underlying principles
 There are a few basic operations that all computers must provide
 Further, the computer designers have a common goal:
 Finding a language that makes it easy to build the hardware and the
compiler
 While maximizing performance and minimizing cost and power
OPERATIONS OF THE COMPUTER
HARDWARE
 ARM assembly language notation
 ADD a, b, c
 Instructs a computer to add the two variables b and c
and to put their sum in a
 Each ARM arithmetic instruction performs only one
operation and must always have exactly three variables
 Sequence of instructions adding four variables:
 ADD a, b, c # The sum of b and c is placed in a.
 ADD a, a, d # The sum of b, c, and d is now in a.
 ADD a, a, e # The sum of b, c, d, and e is now in a.
 Thus, it takes three instructions to sum the four variables
OPERATIONS OF THE COMPUTER
HARDWARE (2)
 Number of operands for an operation like addition is three:
 The two numbers being added together and a place to put
the sum
 Requiring every instruction to have exactly three operands,
no more and no less, conforms to the philosophy of
keeping the hardware simple
 Hardware for a variable number of operands is more
complicated than hardware for a fixed number
 Design principle 1: Simplicity favors regularity
 Regularity makes implementation simpler
OPERATIONS OF THE COMPUTER
HARDWARE (2)
Compiling simple C Assignment Statements into ARM
a = b + c;
d = a – e;
 ARM code produced by a compiler

ADD a, b, c
SUB d, a, e
 Compiling a Complex C Assignment into ARM
f = (g + h) – (i + j);
 The compiler must break this statement into several
assembly instructions
 Since only one operation is performed per ARM
instruction
COMPILED ARM CODE

 ADD t0,g , h # temporary variable t0 contains g + h


 ADD t1, i, j # temporary variable t1 contains i
+j
 SUB f, t0, t1 # f gets t0 – t1, which is (g + h) –
(i + j)
Operands of the Computer
Hardware
OPERANDS OF THE COMPUTER HARDWARE
 Operands of arithmetic instructions are restricted

 They must be from a limited number of special


locations built directly in hardware called registers
 Registers are primitives used in hardware design
 The size of a register in the ARM architecture is 32 bits
 Groups of 32 bits are word in the ARM architecture
 Limited number of registers, (typically 16 or 32 on
current computers)
 16 (ARM )
 32 (MIPS)
COMPILING A C ASSIGNMENT USING
REGISTERS
 It is the compiler’s job to associate program variables
with registers
 The assignment statement from our earlier example:

 f = (g + h) – (i + j);

 The variables g, h, i, ,j and f are assigned to the


registers r0, r1, r2, r3, and r4, respectively
 Complied ARM code

 ADD r5, r0, r1 # register r5 contains g + h


 ADD r6, r2, r3 # register r6 contains i + j
 SUB r4, r5, r6 # r4 gets r5 – r6, which is (g + h)–(i
+ j)
 r5 & r6 are temporary registers
DESIGN PRINCIPLE 2 – SMALLER IS
FASTER
A very large number of registers may increase the
clock cycle time

 Designer must balance the thirst of programs for more


registers with the desire to keep the clock cycle fast

 Anotherreason for not using more than 16 is the


number of bits it would take in the instruction format

 Third reason is to conserve energy


MEMORY OPERANDS
 The processor can keep only a small amount of data in registers,
but computer memory contains billions of data elements
 Arithmetic operations occur only on registers in ARM
instructions
 ARM must include instructions that transfer data between
memory and registers
 Such instructions are called data transfer instructions

 To access a word in memory, the instruction must supply the


memory address
 Memory is just a large,

single-dimensional array, with the


address acting as the index to that
array, starting at 0.
DATA TRANSFER INSTRUCTION
 Load
- Data transfer instruction that copies data from
memory to a register

 The format of the load instruction


 name of the operation followed by the register to be loaded,
then a register and constant used to access memory

 Thesum of constant portion of the instruction and the


contents of the second register forms the memory
address

 Theactual ARM name for this instruction is LDR (load


word into register)
COMPILING AN ASSIGNMENT WHEN AN
OPERAND IS IN MEMORY
 Let’s assume that A is an array of 100 words and that the compiler has
associated the variables g and h with the registers r1 and r2 and uses r5 as
temporary register. Let’s also assume that the starting address or base address
of the array is in r3.
 Compile this C assignment statement: g = h + A[8];
 Single operation in this assignment statement
 One of the operands is in memory. First transfer A[8] to a register
 The address of this array element is the sum of the base of the array A, found
in register r3, plus the number to select element 8
 The data should be placed in a temporary register for use in the next
instruction
 LDR r5, [r3, #8] ; Temporary register r5 gets A[8]
 ADD r1, r2, r5 # g = h + A[8]
 The constant in a data transfer instruction (8) is called the offset
 The register added to form the address (r3) is called the base register
ACTUAL ARM MEMORY ADDRESSES AND CONTENTS OF MEMORY FOR THOSE
WORDS

 SinceARM addresses each byte, word addresses are


multiples of 4: there are 4 bytes in a word

 In ARM, words must start at addresses that are multiples


of 4
 This requirement is called an alignment restriction, and
found in many architectures
COMPILING USING LOAD AND STORE
 A[12] = h + A[8];
 Single operation in C statement

 Two of the operands are in memory. Need more ARM


instructions
 First two instructions are the same as the prior example

 This time we use the proper offset for byte addressing in the
load word instruction to select A[8], and the add instruction
places the sum in r5
 LDR r5,[r3, #32] ; Temporary register r5 gets A[8]

 ADD r5, r2, r5 ; Temporary register r5 gets h + A[8]


 The final instruction stores the sum into A[12], using 48 (4 ×
12) as the offset and register r3 as the base register
 STR r5,[r3, #48] ; Stores h + A[8] back into A[12]
 Load word and store word are the instructions that copy words
between memory and registers in the ARM architecture
DATA IN REGISTERS
 Many programs have more variables than registers in a
computers
 The compiler tries to keep the most frequently used variables in
registers and places the rest in memory
 Using loads and stores to move variables between registers and
memory
 The process of putting less commonly used variables (or those
needed later) into memory is called spilling registers
 The hardware principle relating size and speed suggests that
memory must be slower than registers, since there are fewer
registers
 Data accesses are faster if data is in registers instead of memory
DATA IN REGISTERS (2)
 Moreover, data is more useful when in a register
 A ARM arithmetic instruction can read two registers, operate
on them, and write the result
 A ARM data transfer instruction only reads one operand or
writes one operand, without operating on it
 Thus, registers take less time to access and have higher
throughput than memory, making data in registers both faster
to access and simpler to use
 Accessing registers also uses less energy than accessing
memory
 To achieve highest performance and conserve energy,
compilers must use registers efficiently
CONSTANT OR IMMEDIATE OPERANDS
 Using only the instructions we have seen so far
 We would have to load a constant from memory to use one

 For example, to add the constant 4 to register r3, we could use the
code
 LDR r5, [r1, #AddrConstant4] # r5 = constant 4
 ADD r3, r3, r5 # r3 = r3 + r5 (r5 == 4)
 r1 + AddrConstant4 is the memory address of the constant 4

 An alternative that avoids the load instruction is to offer the option


having one operand of the arithmetic instructions be a constant,
called an immediate operand
 To add 4 to register r3, we just write

 ADD r3, r3, #4 # r3 = r3 + 4


 The sharp or # symbol mean the following number is constant
CONSTANT OR IMMEDIATE OPERANDS (2)

 Immediate instructions illustrate the third hardware


design principle

 Design Principle 3: Make the common case fast


 Constant operands occur frequently
 By including constants inside arithmetic instructions,
operations are much faster and use less energy than if
constants were loaded from memory

You might also like