Witam,
mam problem z zaliczeniem przedmiotu. Któryś już raz poprawiam kolokwium, ucząc się za każdym razem od początku i nadal nie wiem co piszę źle.
Jakby ktoś byłby w stanie spojrzeć na przykładowe zadania i wesprzeć mnie, byłabym wdzięczna za każdą pomoc.
0
1
No to czego nie rozumiesz? Co próbujesz zrozumieć? Może uda mi się podopowiedzieć.
Rzecz, którą sama możesz zrobić — poczytaj o rejestrach i instrukcjach, które są używane (np. tu: https://c9x.me/x86/html/file_module_x86_id_5.html). Następnie weź debugger i instrukcja po instrukcji patrz jak ci się zmienia stan. Też warto użyć gcc żeby wygenerować kod assemblerowy.
9:11:45:lew@lenh in ~ : cat /tmp/x.c
#include <stdio.h>
int main() {
printf( "Hello world\n" );
return 0;
}
9:11:58:lew@lenh in ~ : gcc -S -O3 /tmp/x.c -o /tmp/x.s
9:12:07:lew@lenh in ~ : cat /tmp/x.s
.file "x.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello world"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
leaq .LC0(%rip), %rdi
subq $8, %rsp
.cfi_def_cfa_offset 16
call puts@PLT
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20171224"
.section .note.GNU-stack,"",@progbits