Системски софтвер/К1 Октобар 2020
Пређи на навигацију
Пређи на претрагу
Поставка
Написати еквивалентан програм на C програмском језику за дати изворни асемблерски код. Изворни асемблерски код је написан у складу са System V ABI.
.intel_syntax noprefix
.text
.global foo
.type foo, @function
foo:
push rbp
mov rbp, rsp
mov QWORD PTR -24[rbp], rdi
mov QWORD PTR -32[rbp], rsi
mov rax, QWORD PTR -24[rbp]
mov rax, QWORD PTR 16[rbp+rax*8]
mov QWORD PTR -8[rbp], rax
mov rax, QWORD PTR -32[rbp]
mov rdx, QWORD PTR [rax]
mov rax, QWORD PTR -8[rbp]
add rdx, rax
mov rax, QWORD PTR -32[rbp]
mov QWORD PTR [rax], rdx
mov rax, QWORD PTR -8[rbp]
pop rbp
ret
Решење
typedef struct {
long array[16];
} InputStruct;
long foo(long arg1, long* arg2, InputStruct niz) {
long var = niz.array[arg1];
*arg2 += var;
return var;
}