Laboratorium 9: asembler x86

Kompilujemy i uruchamiamy programy napisane na ćwiczeniach.

Najprostsza metoda zbudowania programu zawierającego funkcję w asemblerze:

gcc -o f f.s main.c

gdzie f.s jest plikiem zawierającym kod funkcji w asemblerze

main.c plik zwierający program główny w C, np.

int f(int);
int printf(char*,...);
int main() {
  printf("%d\n",f(5));
}

Uwaga: przy uruchamianiu na komputerze 32-bitowym potrzebna jeszcze będzie funkcja dostosowująca protokół wywołania i386 do omawianego na ćwiczeniach, np.

.globl fad
fad:	push %ebp
	mov %esp,%ebp
	//   In 32 bit ABI %edi and %esi are callee-save
	push %edi
	push %esi
	mov 8(%ebp), %edi
	mov 12(%ebp), %esi
	mov 16(%ebp), %edx
	mov 20(%ebp), %ecx
	call f
	pop %esi
	pop %edi
	pop %ebp
	ret