תרגול 5 תכנות באסמבלי, המשך

Slides:



Advertisements
Similar presentations
Fabián E. Bustamante, Spring 2007 Machine-Level Programming II: Control Flow Today Condition codes Control flow structures Next time Procedures.
Advertisements

Computer Architecture and Operating Systems CS 3230 :Assembly Section Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Machine-Level Programming II: Control Flow Today Condition codes Control flow structures Next time Procedures.
Machine-Level Programming II: Control Flow Sept. 12, 2002 Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of Loops Switch Statements.
Machine-Level Programming II Control Flow Sept. 13, 2001 Topics Condition Codes –Setting –Testing Control Flow –If-then-else –Varieties of Loops –Switch.
Machine-Level Programming II: Control Flow September 1, 2008 Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of Loops Switch.
1 Homework Reading –PAL, pp Machine Projects –MP2 due at start of Class 12 Labs –Continue labs with your assigned section.
Assembly Questions תרגול 12.
1 Machine-Level Representation of Programs Ⅱ. 2 Outline Data movement Data manipulation Control structure Suggested reading –Chap 3.4, 3.5, 3.6.
Low Level Programming Lecturer: Duncan Smeed Low Level Program Control Structures.
Machine-Level Programming II: Control Flow Topics Condition codes Conditional branches Loops Switch statements CS 105 “Tour of the Black Holes of Computing”
II:1 x86 Assembly - Control. II:2 Alternate reference source Go to the source: Intel 64 and IA32 
Dr. José M. Reyes Álamo 1.  Review: ◦ Statement Labels ◦ Unconditional Jumps ◦ Conditional Jumps.
1 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Carnegie Mellon Machine-Level Programming II: Control : Introduction.
1 COMP 2130 Introduction to Computer Systems Computing Science Thompson Rivers University Machine Level Programming.
Machine-Level Programming II: Control Flow Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of loops Switch statements CS 105.
University of Washington Today Lab 2 due next Monday! Finish-up control flow Switch statements 1.
Machine-Level Programming II: Control Flow Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of loops Switch statements CS 105.
1 Logic, Shift, and Rotate Instructions Read Sections 6.2, 7.2 and 7.3 of textbook.
1 Carnegie Mellon Machine-Level Programming II: Arithmetic and Control Lecture, Feb. 28, 2012 These slides are from website which.
Assembly Language. Symbol Table Variables.DATA var DW 0 sum DD 0 array TIMES 10 DW 0 message DB ’ Welcome ’,0 char1 DB ? Symbol Table Name Offset var.
EEL 3801 Part V Conditional Processing. This section explains how to implement conditional processing in Assembly Language for the 8086/8088 processors.
1 Bryant and O’Hallaron, Computer Systems: A Programmer’s Perspective, Third Edition Carnegie Mellon Machine-Level Programming II: Control Carnegie Mellon.
University of Washington x86 Programming II The Hardware/Software Interface CSE351 Winter 2013.
Chapter 7 Bit Manipulation. 7.1 Logical Operations.
Microprocessor & Assembly Language
IA32: Control Flow Topics –Condition Codes Setting Testing –Control Flow If-then-else Varieties of Loops Switch Statements.
Machine-Level Programming II: Control Flow Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of loops Switch statements CS 105.
Carnegie Mellon Machine-Level Programming II: Arithmetic & Control /18-243: Introduction to Computer Systems 6th Lecture, 5 June 2012 Carnegie Mellon.
Assembly תרגול 7 תכנות באסמבלי, המשך. Condition Codes Single bit registers  CF – carry flag  ZF – zero flag  SF – sign flag  OF – overflow flag Relevant.
Machine-Level Programming II Control Flow Sept. 14, 2000 Topics Condition Codes –Setting –Testing Control Flow –If-then-else –Varieties of Loops –Switch.
Machine-Level Programming 2 Control Flow Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of Loops Switch Statements.
Machine-Level Programming II: Control Flow Topics Condition Codes Setting Testing Control Flow If-then-else Varieties of Loops Switch Statements class06.ppt.
Machine-Level Programming 2 Control Flow
Data Transfers, Addressing, and Arithmetic
Homework Reading Labs PAL, pp
Basic Assembly Language
Assembly IA-32.
Machine-Level Programming II: Arithmetic & Control
Machine-Level Programming II Control Flow Sept. 9, 1999
Machine-Level Programming II: Control
Chapter 3 Machine-Level Representation of Programs
Machine-Level Representation of Programs II
Machine-Level Programming II: Control Flow
Instructor: David Ferry
Condition Codes Single Bit Registers
Machine-Level Programming: Control Flow
Machine-Level Programming 2 Control Flow
Machine-Level Programming II: Control Flow
CS 301 Fall 2002 Computer Organization
Machine-Level Programming 2 Control Flow
Machine-Level Representation of Programs III
Machine-Level Programming 2 Control Flow
Homework Reading Machine Projects Labs PAL, pp
Chapter 3 Machine-Level Representation of Programs
Machine-Level Programming II: Control Flow
MIPS Assembly.
X86 Assembly - Control.
Machine-Level Programming II: Control Flow Sept. 12, 2007
Carnegie Mellon Ithaca College
Carnegie Mellon Ithaca College
Carnegie Mellon Ithaca College
CS201- Lecture 8 IA32 Flow Control
Credits and Disclaimers
Presentation transcript:

תרגול 5 תכנות באסמבלי, המשך Assembly תרגול 5 תכנות באסמבלי, המשך

Condition Codes Single bit registers CF – carry flag. Unsigned overflow. ZF – zero flag. Zero result. SF – sign flag. Negative result. OF – overflow flag. Signed overflow. Relevant only for the most recent operation leal does not alter any condition code In logical operations, CF and OF are set to 0 For shift operations, OF is set to 0, CF is the last shifted out bit

Setting Condition Codes Specific instructions that alter only the condition codes. test command only changes ZF and SF

Setting Condition Codes (cont.) Explicit Setting by Compare Instruction cmpl Src2,Src1 cmpl b,a like computing a-b without setting destination CF set if carry out from most significant bit Used for unsigned comparisons ZF set if a == b SF set if (a-b) < 0 OF set if two’s complement overflow (a>0 && b<0 && (a-b)<0) || (a<0 && b>0 && (a-b)>0)

Setting Condition Codes (cont.) Explicit Setting by Test instruction testl Src2,Src1 Sets condition codes based on value of Src1 & Src2 Useful to have one of the operands be a mask testl b,a like computing a&b without setting destination . Sets only ZF and SF others get 0. ZF set when a&b == 0 SF set when a&b < 0

Accessing the Condition Codes D - one of the small 8 bit registers

Why does it work? Let’s take cmpl b,a for example If there is no overflow and a≥b  SF=0, OF=0 If there is no overflow and a<b  SF=1, OF=0 If there is a negative overflow (a>b)  SF=1, OF=1 If there is a positive overflow (a<b)  SF=0, OF=1

a < b in assembly Translate the line: return (a<b);

a < b in assembly Translate the line: return (a<b); Solution : Suppose a is in %edx, b is in %eax: cmpl %eax,%edx # compare a to b setl %al # set %al to 0 or 1 movzbl %al,%eax # set %eax to 0 or 1

Jump Instructions

Unconditional Jump - always jumps ! Dangerous ! Direct jump - to label jmp L1 Indirect jump jmp *%eax - value inside register as jump to address jmp *(%eax) - value inside register as address containing the jump to address

Conditional Jump Can’t use indirect jump - must jump to label and not to address or register value Use it to implement if conditions loops switch statements Easiest to understand by converting to “go to” format.

Goto in C

If Condition in Assembly

If Condition in Assembly

Do-While Loops

Do-While Loops in Assembly

While Loops

Exercise Initially Variable Register %eax %ebx %ecx %edx

Exercise’s Solution Initially Variable Register a %eax b %ebx i %ecx i %ecx result %edx

.p2align 4,,7- a command to the assembler that says I want the following command to start at an address that divides by 16 (2^4), while not wasting more than 7 bytes in order to achieve this. Inserts zeros at the end. Usually done for commands that we will use a lot - make sure they sit in an efficient place in memory. This alignment often improves cache hits (which reduces memory latency), as spatially local memory will end up in the same cache line / memory page.

Exercise’s Solution Note the optimization done by the compiler! עד כאן עם הקבוצה הראשונה Note the optimization done by the compiler!

For Loops

Exercise

Exercise’s Solution Note the optimization done by the compiler!

Exercise’s Solution Note the optimization done by the compiler! ( Removal of y*x out of the loop )

Switch Statements in C

Switch Statements in Assembly Building the jump table in the read only data section :

Switch Statements in Assembly Calculates the case as the address I will jump to. Each table entry has to be the same size for easy address calculation. Have to have some kind of value for each entry ( can have no missing entries - missing ones will get a default value ). Will jump to : ‘index’ * 4 + initial table address.

Switch Statements in Assembly

Switch Statements in Assembly עד כאן עם הקבוצה השניה

Exercise

Q & A Q: What were the values of the case labels in the switch statement body? What cases had multiple labels in the C code? A: The case labels had values -2,0,1,2,3,4 The case with the labels 2 and 3