Strona w budowie, wejście na własną
odpowiedzialność.
Asemblacja i linkowanie dynamiczne dla kodu 64-bitowego:
nasm -f elf64 program.asm ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o program -lc program.o
Asemblacja i linkowanie dynamiczne dla kodu 32-bitowego:
nasm -f elf32 program.asm ld -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o program -lc program.o
Numery wywołań systemowych (system calls) w Linuxie znajdują się w pliku /usr/include/x86_64-linux-gnu/asm/unistd_64.h dla wersji 64-bitowej, zaś dla 32-bitowej w /usr/include/x86_64-linux-gnu/asm/unistd_32.h oraz /usr/include/x86_64-linux-gnu/asm/unistd_x32.h. Są one jednak w postaci przydatnej dla języka C.
Scenariusze:
W katalogu scen znajdują się przykładowe rozwiązania ćwiczeń.GDB cheatsheets (,,bryki'')
Dokumentacja AMD, zwłaszcza
Dokumentacja Intel, stamtąd
Instrukcje SSE (WiP).
Trochę ostatnio zaniedbana inna dobra strona o SSE
Programy przykładowe z książki: Richard Blum ,,Professional Assembly Language'' (przepisane przeze mnie na NASM i przerobione na tryb 64-bitowy).
Uwagi o 64 bitach (i nie tylko)
printf
) w rejestrze rax
powinna znajdować
się liczba argumentów w rejestrach SSE. Zwykle należy więc go wyzerować.
Jeśli o tym zapomnimy, to program czasem działa normalnie, a czasem ,,wariuje'' (np. zapętla się nic nie wypisując).
Przykład przestawiania sterownika klawiatury w stan ,,surowy'' w języku C: setraw.c.
Przykład programu do konfigurowania sterownika klawiatury pod asemblerem: rawkb.asm.