Programowanie w asemblerze - laboratorium

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ń.

Materiały

GDB cheatsheets (,,bryki'')

Dokumentacja AMD, zwłaszcza

Dokumentacja Intel, stamtąd

SIMD

Instrukcje SSE (WiP).

SSE Instruction Set

SSE2 Instruction Set

A to nadrzędna strona

Trochę ostatnio zaniedbana inna dobra strona o SSE


Programy

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)

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.


Zbigniew Jurkiewicz, Instytut Informatyki UW
Copyright © 2012 Zbigniew Jurkiewicz
zbyszek(at)mimuw.edu.pl