R2023.05.1 - aktualizacja wykładu
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Jan Potocki 2023
|
||||
# Wersja przystosowana do zbudowania jako PIE (Position Independent Executable)
|
||||
|
||||
# Definicje numerow funkcji systemowych i ich parametrow
|
||||
SYSEXIT64 = 60
|
||||
|
||||
# Stale okreslajace rozmiar przetwarzanych danych
|
||||
word_length = 8
|
||||
|
||||
.global main
|
||||
|
||||
# Segment niezainicjalizowanych danych
|
||||
.bss
|
||||
element: .space word_length
|
||||
|
||||
# Segment zainicjalizowanych danych
|
||||
.data
|
||||
format_s: .asciz "%lu"
|
||||
format_p: .asciz "%lu\n"
|
||||
|
||||
# Segment kodu
|
||||
.text
|
||||
|
||||
main:
|
||||
# To jest potrzebne zeby printf i scanf nie konczyly sie segfaultem
|
||||
push %rbp
|
||||
mov %rsp, %rbp
|
||||
|
||||
lea format_s(%rip), %rdi # Adresowanie wzgledem rip, wprowadzone w x86-64
|
||||
#mov $format_s, %rdi # ...tu nam wystarczy sam adres
|
||||
lea element(%rip), %rsi
|
||||
#mov $element, %rsi
|
||||
mov $0, %rax # Nie ma argumentow dla scanf() w rejestrach xmm
|
||||
call scanf
|
||||
|
||||
|
||||
lea element(%rip), %r8 # Tutaj trzeba jakis posredni rejestr...
|
||||
movq (%r8), %rdi # ...zeby odwolac sie do wartosci
|
||||
#movq element, %rdi
|
||||
call fibb
|
||||
|
||||
lea format_p(%rip), %rdi
|
||||
#mov $format_p, %rdi
|
||||
mov %rax, %rsi # rax - wartosc zwrocona przez fibb()
|
||||
mov $0, %rax # Nie ma argumentow dla printf() w rejestrach xmm
|
||||
call printf
|
||||
|
||||
mov $SYSEXIT64, %rax
|
||||
mov $0, %rdi
|
||||
syscall
|
||||
Reference in New Issue
Block a user