Compare commits
2 Commits
0ba84bef75
...
f2242fdb42
| Author | SHA1 | Date | |
|---|---|---|---|
| f2242fdb42 | |||
| 6fee8ccd48 |
@@ -1,12 +1,12 @@
|
|||||||
# AK2 - lab 2019+
|
# 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.
|
Repozytorium powstało w 2019 i będzie na bieżąco aktualizowane.
|
||||||
|
|
||||||
Przydatne linki:
|
Przydatne linki:
|
||||||
* Intel 64 and IA-32 Architectures Software Developer’s Manual (Combined Volumes) – opis architektury procesorów x86 i spis wszystkich rozkazów asemblera:
|
* Intel 64 and IA-32 Architectures Software Developer’s 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
|
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:
|
* 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:
|
* 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
|
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:
|
* System V Application Binary Interface i386 – opis 32-bitowej konwencji wywołań x86 używanej w systemach z rodziny Linux:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user