Compare commits

...

2 Commits

Author SHA1 Message Date
MKjanek32 f2242fdb42 Aktualizacja README (semestr letni 2022) 2022-04-04 23:12:05 +02:00
MKjanek32 6fee8ccd48 Wydanie R2022.04.1 2022-04-04 23:09:51 +02:00
3 changed files with 55 additions and 2 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
# AK2 - lab 2019+
Trochę różnych programów napisanych przy pomocy z rozwiązywaniem zadań od mgr Aleksandry Postawki, mgra Tomasza Serafina, dra Tadeusza Tomczaka (i innych) na zajęciach laboratoryjnych z Architektury komputerów 2, w formie materiałów dydaktycznych kod szczegółowo opisany w komentarzach.
Trochę różnych programów napisanych przy pomocy z rozwiązywaniem zadań od mgr Aleksandry Postawki, mgra Tomasza Serafina, prof. Tadeusza Tomczaka (i innych) na zajęciach laboratoryjnych z Architektury komputerów 2, w formie materiałów dydaktycznych kod szczegółowo opisany w komentarzach.
Repozytorium powstało w 2019 i będzie na bieżąco aktualizowane.
Przydatne linki:
* Intel 64 and IA-32 Architectures Software Developers Manual (Combined Volumes) opis architektury procesorów x86 i spis wszystkich rozkazów asemblera:
https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
* Linux System Call Table spis funkcji systemowych Linuxa dla 32- i 64-bitowej wersji x86 w przejrzystej formie:
https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md
https://chromium.googlesource.com/chromiumos/docs/+/HEAD/constants/syscalls.md
* System V Application Binary Interface AMD64 opis 64-bitowej konwencji wywołań x86 używanej w systemach z rodziny Linux:
https://www.uclibc.org/docs/psABI-x86_64.pdf
* System V Application Binary Interface i386 opis 32-bitowej konwencji wywołań x86 używanej w systemach z rodziny Linux:
+10
View File
@@ -0,0 +1,10 @@
all: echo
echo: echo.o
ld -melf_i386 echo.o -o echo
echo.o: echo.s
as --32 echo.s -o echo.o
clean:
rm echo echo.o
+43
View File
@@ -0,0 +1,43 @@
# Jan Potocki 2022
# Definicje numerow funkcji systemowych i ich argumentow
SYSEXIT = 1
SYSREAD = 3
SYSWRITE = 4
STDIN = 0
STDOUT = 1
SYSCALL32 = 0x80
# Stale
buff_len = 1
end_char = 'Q'
.global _start
.bss
# Bufor na czytany znak
buff: .space buff_len
.text
_start:
mov $SYSREAD, %eax # Wczytanie znaku ze standardowego wejscia
mov $STDIN, %ebx # ...funkcja systemowa read
mov $buff, %ecx
mov $buff_len, %edx
int $SYSCALL32
mov $end_char, %eax # Sprawdzenie, czy wczytano znak konczacy
cmp %eax, buff
je koniec # ...jezeli tak, skok na koniec
mov $SYSWRITE, %eax # Wypisanie znaku na standardowe wyjscie
mov $STDOUT, %ebx # ...funkcja systemowa write
mov $buff, %ecx
mov $buff_len, %edx
int $SYSCALL32
jmp _start # Skok na poczatek (petla)
koniec:
mov $SYSEXIT, %eax # Funkcja systemowa exit...
mov $0, %ebx # ...kod zakonczenia 0
int $SYSCALL32