DOC PREVIEW
Berkeley COMPSCI 61C - C/Assembler Arithmetic and Memory Access

This preview shows page 1-2-16-17-18-33-34 out of 34 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS61C - Machine Structures Lecture 4 - C/Assembler Arithmetic and Memory AccessOverviewReview C Operators/Operands (1/2)C Operators/Operands (1/2)Assembly Design: Key ConceptsAssembly Variables: Registers (1/4)Assembly Variables: Registers (2/4)Assembly Variables: Registers (3/4)Assembly Variables: Registers (4/4)Comments in AssemblyAssembly InstructionsAddition and Subtraction (1/4)Addition and Subtraction (2/4)Addition and Subtraction (3/4)Addition and Subtraction (4/4)AdministriviaImmediatesSlide 18Register ZeroAssembly Operands: MemoryData Transfer: Memory to Reg (1/4)Data Transfer: Memory to Reg (2/4)Data Transfer: Memory to Reg (3/4)Data Transfer: Memory to Reg (4/4)Data Transfer: Reg to Memory (1/2)Data Transfer: Reg to Memory (2/2)Pointers v. ValuesAddressing: Byte vs. wordCompilation with MemoryNotes about MemoryMore Notes about Memory: AlignmentRole of Registers vs. Memory“And in Conclusion…” (1/2)“And in Conclusion…”(2/2)cs61c L4 9/7/001CS61C - Machine StructuresLecture 4 - C/Assembler Arithmetic andMemory AccessSeptember 8, 2000David Pattersonhttp://www-inst.eecs.berkeley.edu/~cs61c/cs61c L4 9/7/002Overview°C operators, operands°Variables in Assembly: Registers°Comments in Assembly°Addition and Subtraction in Assembly°Memory Access in Assemblycs61c L4 9/7/003Review C Operators/Operands (1/2)°Operators: +, -, *, /, % (mod); •7/4==1, 7%4==3°Operands: •Variables: lower, upper, fahr, celsius•Constants: 0, 1000, -17, 15.4°Assignment Statement:Variable = expression•Examples:celsius = 5*(fahr-32)/9;a = b+c+d-e;cs61c L4 9/7/004C Operators/Operands (1/2)°In C (and most High Level Languages) variables declared first and given a type•Example: int fahr, celsius; char a, b, c, d, e;°Each variable can ONLY represent a value of the type it was declared as (cannot mix and match int and char variables).cs61c L4 9/7/005Assembly Design: Key Concepts°Keep it simple!•Limit what can be a variable and what can’t•Limit types of operations that can be done to absolute minimum -if an operation can be decomposed into a simpler operation, don’t include itcs61c L4 9/7/006Assembly Variables: Registers (1/4)°Unlike HLL, assembly cannot use variables•Why not? Keep Hardware Simple°Assembly Operands are registers•limited number of special locations built directly into the hardware•operations can only be performed on these!°Benefit: Since registers are directly in hardware, they are very fastcs61c L4 9/7/007Assembly Variables: Registers (2/4)°Drawback: Since registers are in hardware, there are a predetermined number of them•Solution: MIPS code must be very carefully put together to efficiently use registers°32 registers in MIPS•Why 32? Smaller is faster°Each MIPS register is 32 bits wide•Groups of 32 bits called a word in MIPScs61c L4 9/7/008Assembly Variables: Registers (3/4)°Registers are numbered from 0 to 31°Each register can be referred to by number or name°Number references:$0, $1, $2, … $30, $31cs61c L4 9/7/009Assembly Variables: Registers (4/4)°By convention, each register also has a name to make it easier to code°For now:$16 - $22  $s0 - $s7(correspond to C variables)$8 - $15  $t0 - $t7(correspond to temporary variables)°In general, use names to make your code more readablecs61c L4 9/7/0010Comments in Assembly°Another way to make your code more readable: comments!°Hash (#) is used for MIPS comments•anything from hash mark to end of line is a comment and will be ignored°Note: Different from C.•C comments have format /* comment */ , so they can span many linescs61c L4 9/7/0011Assembly Instructions°In assembly language, each statement (called an Instruction), executes exactly one of a short list of simple commands°Unlike in C (and most other High Level Languages), each line of assembly code contains at most 1 instructioncs61c L4 9/7/0012Addition and Subtraction (1/4)°Syntax of Instructions:1 2,3,4where:1) operation by name 2) operand getting result (“destination”)3) 1st operand for operation (“source1”)4) 2nd operand for operation (“source2”)°Syntax is rigid:•1 operator, 3 operands•Why? Keep Hardware simple via regularitycs61c L4 9/7/0013Addition and Subtraction (2/4)°Addition in Assembly•Example: add $s0,$s1,$s2 (in MIPS)Equivalent to: a = b + c (in C)where registers $s0,$s1,$s2 are associated with variables a, b, c °Subtraction in Assembly•Example: sub $s3,$s4,$s5 (in MIPS)Equivalent to: d = e - f (in C)where registers $s3,$s4,$s5 are associated with variables d, e, fcs61c L4 9/7/0014Addition and Subtraction (3/4)°How do the following C statement? a = b + c + d - e;°Break into multiple instructionsadd $s0, $s1, $s2 # a = b + cadd $s0, $s0, $s3 # a = a + dsub $s0, $s0, $s4 # a = a - e°Notice: A single line of C may break up into several lines of MIPS.°Notice: Everything after the hash mark on each line is ignored (comments)cs61c L4 9/7/0015Addition and Subtraction (4/4)°How do we do this?•f = (g + h) - (i + j);°Use intermediate temporary registeradd $s0,$s1,$s2 # f = g + hadd $t0,$s3,$s4 # t0 = i + j# need to save i+j, but can’t use # f, so use t0sub $s0,$s0,$t0 # f=(g+h)-(i+j)cs61c L4 9/7/0016Administrivia°Project 1 due Midnight°Lab 3: Your first MIPS program!°HW 2 (due Mon 9/11) and HW3 (9/18) online and available°Reading assignment:•P&H 3.1-3.3, 3.5, 3.8 (page 145)cs61c L4 9/7/0017Immediates°Immediates are numerical constants.°They appear often in code, so there are special instructions for them.°Add Immediate:addi $s0,$s1,10 (in MIPS)f = g + 10 (in C)where registers $s0,$s1 are associated with variables f, g °Syntax similar to add instruction, except that last argument is a number instead of a register.cs61c L4 9/7/0018Immediates°There is no Subtract Immediate in MIPS: Why?°Limit types of operations that can be done to absolute minimum •if an operation can be decomposed into a simpler operation, don’t include itaddi $s0,$s1,-10 (in MIPS)f = g - 10 (in C)where registers $s0,$s1 are associated with variables f, g °addi …, -X = subi …, X => so no subics61c L4 9/7/0019Register Zero°One particular immediate, the number zero (0), appears very often in code.°So we define register zero ($0 or $zero) to always have the value 0; egadd $s0,$s1,$zero (in MIPS)f = g (in C)where registers $s0,$s1 are associated with variables f, g°defined in hardware, so an instruction addi $0,$0,5will not do anything!cs61c L4 9/7/0020Assembly Operands: Memory°C variables map


View Full Document

Berkeley COMPSCI 61C - C/Assembler Arithmetic and Memory Access

Documents in this Course
SIMD II

SIMD II

8 pages

Midterm

Midterm

7 pages

Lecture 7

Lecture 7

31 pages

Caches

Caches

7 pages

Lecture 9

Lecture 9

24 pages

Lecture 1

Lecture 1

28 pages

Lecture 2

Lecture 2

25 pages

VM II

VM II

4 pages

Midterm

Midterm

10 pages

Load more
Download C/Assembler Arithmetic and Memory Access
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view C/Assembler Arithmetic and Memory Access and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view C/Assembler Arithmetic and Memory Access 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?