assembly n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Assembly PowerPoint Presentation
Download Presentation
Assembly

Loading in 2 Seconds...

play fullscreen
1 / 28

Assembly - PowerPoint PPT Presentation


  • 163 Views
  • Uploaded on

Assembly. תרגול 7 תכנות באסמבלי, המשך. Condition Codes. Single bit registers CF – carry flag ZF – zero flag SF – sign flag OF – overflow flag Relevant only for the most recent operation leal does not alter any condition code In logical operations, CF and OF are set to 0

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Assembly' - maire


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
assembly

Assembly

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

condition codes
Condition Codes
  • Single bit registers
    • CF – carry flag
    • ZF – zero flag
    • SF – sign flag
    • OF – overflow flag
  • 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 cont
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 cont1
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
  • ZF set when a&b == 0
  • SF set when a&b < 0
why does it work
Why does it work?

Let’s take setl b,a for example

  • If there is no overflow and a≥b  SF=0, OF=1
  • 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
a < b in assembly
  • Translate the line: return (a<b);
  • 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

unconditional jump
Unconditional Jump
  • Direct jump

jmp L1

  • Indirect jump
    • jmp *%eax
    • jmp *(%eax)
conditional jump
Conditional Jump
  • Can’t use indirect jump
  • Use it to implement
    • if conditions
    • loops
    • switch statements
exercise s solution1
Exercise’s Solution

Note the optimization done by the compiler!

exercise s solution2
Exercise’s Solution

Note the optimization done by the compiler!

switch statements in assembly
Switch Statements in Assembly

Building the jump table:

slide28
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