Question: The assembly code on the top came from the skeleton C file on the bottom after optimizing with -O0. gcc -O0 -S -fno-asynchronous-unwind-tables .file hwk4.c

The assembly code on the top came from the skeleton C file on the bottom after optimizing with -O0.

gcc -O0 -S -fno-asynchronous-unwind-tables

.file "hwk4.c" .text .section .rodata .LC0: .string "%d " .text .globl main .type main, @function main: endbr64 pushq %rbp movq %rsp, %rbp subq $32, %rsp movl $-672816143, -12(%rbp) movl $8, -8(%rbp) movl $0, -20(%rbp) movl $0, -4(%rbp) movl $1, -16(%rbp) jmp .L2 .L4: movl -16(%rbp), %eax sall $2, %eax movl -12(%rbp), %edx movl %eax, %ecx sarl %cl, %edx movl %edx, %eax andl $15, %eax movl %eax, -4(%rbp) movl -4(%rbp), %eax cmpl -8(%rbp), %eax jle .L3 addl $1, -20(%rbp) .L3: addl $2, -16(%rbp) .L2: cmpl $8, -16(%rbp) jle .L4 movl -20(%rbp), %eax movl %eax, %esi leaq .LC0(%rip), %rdi movl $0, %eax call printf@PLT movl $0, %eax leave ret

------------------------------------------------------------------------------------------------------------

#include int main() { int c=______(A)_____; int n=______(B)_____; int count = 0; int digit = 0; int i; for (i=1;____(C)___; ___(D)___){ digit = (____(E)____>> (i<<2)) ___(F)___; if(digit ____(G)____ n) count++; } printf("%d ",count); }

--

1.1 Map the assembly address/register to the variables

-20(%rbp)

-16(%rbp)

-12(%rbp)

-8(%rbp)

-4(%rbp)

1.2 From the C code skeleton and answer what C could could/should go in the blanks

a.

b.

c.

e.

f.

g

Q2 Determine the result of the following operations and state where the result is stored.

Consider the following initial values for the registers and memory. Values are reset back to the values shown in the table before each operation. Determine the result of the following operations and state where the result is stored.

Destination should be formatted after doing all address calculations in order to be counted for full credit

Result should match the size specified by the destination

Register Value
%rax 0xFEDCBA9876543210
%rbx 0x0000000012345678
%r8 0xFFFFFFFFFFFFFFFE
Memory Address Value
0xFEDCBA9876543209 0xC3
0xFEDCBA987654320A 0xA8
0xFEDCBA987654320B 0x2B
0xFEDCBA987654320C 0x98
0xFEDCBA987654320D 0x7D
0xFEDCBA987654320E 0x02
0xFEDCBA987654320F 0x4C
0xFEDCBA9876543210 0x64
0xFEDCBA9876543211 0x38
0xFEDCBA9876543212 0x91
0xFEDCBA9876543213 0x7A
0xFEDCBA9876543214 0x23
0xFEDCBA9876543215 0x61
0xFEDCBA9876543216 0xAB
0xFEDCBA9876543217 0xCF
0xFEDCBA9876543218 0x3F
0xFEDCBA9876543219 0x19
0xFEDCBA987654321A 0xD3

2.1 Given the command, State the destination and the result

Command: decl %ebx

Destination:

Result:

2.2 Given the command, State the destination and the result

Command: incb 9(%rax)

Destination:

Result:

2.3 Given the command, State the destination and the result

Command: negq %rax

Destination:

Result:

2.4Given the command, State the destination and the result

Command: xorq %rbx,%rax

Destination:

Result:

2.5 Given the command, State the destination and the result

Command: sarl $3, %ebx

Destination:

Result:

2.6 Given the command, State the destination and the result

Command: xorw $5, -0x4(%rax)

Destination:

Result:

2.7 Given the command, State the destination and the result

Command: subw -6(%rax),%bx

Destination:

Result:

2.8 Given the command, State the destination and the result

5 Points

Grading comment:

Destination:

Result:

2.9 Given the command, State the destination and the result

Command: movw 12(%rax,%r8,4),%ax

Destination:

Result:

2.10 Given the command, State the destination and the result

Command: movb 2(%rax,%r8,2), %bl

Destination:

Result:

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!