[SOLVED] CS代考 LFB23:

30 $

File Name: CS代考_LFB23:.zip
File Size: 141.3 KB

SKU: 8252866477 Category: Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Or Upload Your Assignment Here:


1) Consider the following source code, where R, S, and T are constants declared with #define: long A[R][S][T];
long store_ele(long i, long j, long k, long *to)
*to = A[i][j][k];
return sizeof(A);

Copyright By PowCoder代写加微信 assignmentchef

In compiling this program, gcc generates the following assembly code:
long store_ele(long i, long j, long k, long *to)
i in %rdi, j in %rsi, k in %rdx, to in %rcx 1 store_ele:
2 leaq (%rsi,%rsi,2), %rax
3 leaq (%rsi,%rax,4), %rax
4 movq %rdi, %rsi
5 salq $6, %rsi
6 addq %rsi, %rdi
7 addq %rax, %rdi
8 addq %rdi, %rdx
9 movq A(,%rdx,8), %rax
10 movq %rax, %(rcx)
11 movl $3640, %eax
%rax = j+2j=3j
%rax = j+4(3j)=13j %rsi=i
%rsi = i*2^6=64i
%rdi = i+64i = 65i %rdi=65i+13j %rdx=k+(65i+13j) %rax = A[8(k+65i+13j)] %(rcx) = A[i][j][k] R*S*T*8=3640
A. Which register is used to pass each one of the arguments? It is in the header of the assembly code.
B. Use your reverse engineering skills to determine the values of R, S, and T based on this assembly code. Write your answer here:
This is what each line will execute: 2 – %rax = 3j
3 – %rax = j + 4*3j = 13j
4 – %rsi = i
5 – %rsi = 64i 6 – %rdi = 65i

7 – %rdi = 65i +13j
8 – %rdx = k + 65i +13j
9 – %rdx = A[8(65i + 13j + k)] 10 – %rax = R*S*T = 3640
From the above statements, we know that T=13. We also know that S*T=65, therefore S=5. Finally, we know that R*S*T*8=3640, therefore R=7
Page 2 of 4

2) Consider the following assembly code:
%rax = 0 %rdx = 0
if (%rax < %rdi) continue (%rax – %rdi) ZF = 0, SF = 1 if (%rax > %rdi) go_to end(.L4)
%rdx=%rdx+2
%rax=%rax+1
“StudyGuide.c”
my_proc, @function
$0, %eax $0, %edx
%edi, %eax .L4
$2, %edx $1, %eax .L2
.file .text .globl .type
my_proc: .LFB23:
cmpl jge addl addl jmp
for (i=0; i <movl %edx, %eax %rax = %rdx ret.size my_proc, .-my_proc.string “The sum is %d.

” .text.globl main.type main, @functionmain: .LFB24:subq $8, %rspmovl $5, %edicall my_procmovl %eax, %edxleaq .LC0(%rip), %rsi movl $1, %edimovl $0, %eaxcall movl $0, %eaxaddq $8, %rsp .cfi_def_cfa_offset 8.size main, .-main.ident “GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0” .section.section .note.gnu.property,”a”go_to .L2 parameter; i++) {val = val + 2;} return val; Page 3 of 4 .long 1f-0f .long 4f-1f .long 5.string “GNU”.long 0xc0000002.long 3f-2f 2:.long 0x3 3:.align 8 4:Write the code for the procedure my_proc.int ret = 0;for (int i=0; i < times; i++) {ret += 2; }return ret;The return of my_proc (%rdx).What is printed by function printf? Page 4 of 4程序代写 CS代考加微信: assignmentchef QQ: 1823890830 Email: [email protected]

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] CS代考 LFB23:
30 $