Draw a stack frame structure to show the caller frame p and


1. Code to assembly #1

Write the assembly code for the following:

if (x < y)

y=x;

else

Assume:

y= y*32;

i. ‘x' and ‘y' addresses are stored in %ecx and %edx.

ii. Use registers %eax and %ebx to store ‘x' and ‘y' during computations.

iii. Use immediate for any constants.

2. Code to assembly #2

Write the assembly level program for the following:

if (a[1] == 0)
    a[2]++;

else

     if (a[2]!= 0)
          a[2+i] += a[i+1];

Assume:
1. Base address of integer array a is stored in %esp
2. The value of i is available in %ecx

3. Computing assembly code output. Computing condition codes.

Given the following state of the registers and memory:

Address

Value

 

Register

Value

0x309

0xFF

%al

0x99

0x30A

0x1

%ebx

0x30C

0x30B

0x2

%ecx

0xFFFFFFFF

0x30C

0x20

%dl

0xFF

 

 

%esp

0x1

The following instructions are executed sequentially:

cmpb %dl, %al jge L1
cmovl $EC, %al subb %dl, %al js L2
L1:
subb $3, %ebx L2:
addb (%ebx), %dl

Fill up the below table as follows:

• Cross out the instructions that are not executed (if any).
• After every instruction is executed, write the status of the condition codes and changes to any register or memory location in the adjacent columns.
• What are the final hexadecimal values of the registers %al, %ebx %ecx and %dl?

Instruction

CF

ZF

SF

OF

Your calculations to determine output of move, compare and arithmetic operations & changes to register/memory (if any)

cmpb %dl, %al

 

 

 

 

 

jge L2

 

 

 

 

 

cmovl $EC, %al

 

 

 

 

 

subb %al, %dl

 

 

 

 

 

js L1

 

 

 

 

 

L1:

subb $3, %ebx

 

 

 

 

 

L2:

addb (%ebx), %dl

 

 

 

 

 

 

4. Stack creation

Each time a new procedure is called, a new stack frame is created for that procedure. Assume that a procedure P calls procedure Q and a new stack frame has been created.

You are given the following information:

1. Q has two arguments:
   a. Argument 1 of type Integer
   b. Argument 2 of type Character
2. The stack frame for P begins at memory address 0x200.
3. The memory address of Argument 1 is 0x100

Questions:

1. Draw a stack frame structure to show the caller frame P and the called frame Q. Draw the following in this frame structure:
   a. The "top" and "bottom" of procedure P's stack
   b. The location and memory address of Arguments 1 & 2.
   c. The first value stored in the new stack frame (In hex). What does this value represent?
   d. The value in %ebp after Q's stack is created
2. Which register stores Q's frame pointer after the stack frame for Q is created?
3. What is the value stored in this register before the stack for Q was created?

Request for Solution File

Ask an Expert for Answer!!
Computer Engineering: Draw a stack frame structure to show the caller frame p and
Reference No:- TGS01204974

Expected delivery within 24 Hours