Ce n'est pas tout à fait ce que tu veux, mais http://swox.com/doc/x86-timing.pdf est de bon conseils si tu veux écrire de l'assembleur performant pour x86. Mais ca suppose que tu le connaisses déjà.
# # Ce programme imprime la valeur de ESP quand on est lance par le noyau # # Interface du write : # 4 --> EAX # fd --> EBX # stdout correspond au fd 1 # buffer --> ECX # nboct --> EDX # int $0x80 # .text .globl _start _start: # on traduit en ascii ESP dans esp_str mov %esp,%eax mov $esp_str, %ecx push %ecx push %eax call hex2bin add $8,%esp # on imprime msg mov $4,%eax mov $1,%ebx mov $msg,%ecx mov $16,%edx int $0x80 # on imprime esp_str mov $4,%eax mov $1,%ebx mov $esp_str,%ecx mov $9,%edx int $0x80 # appel a exit mov $0xfc,%eax int $0x80 ret .data msg: .string "Valeur de ESP : " esp_str: .string "XXXXXXXX\n"
char digit[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; void hex2bin(unsigned int n, char * s) { int i; unsigned int c; s = s + 7; for (i = 1; i <= 8; i++) { c = n & 0xf; *s-- = digit[c]; n = n >> 4; } }
essai: print_esp.o hex2bin.o ld -o print_esp print_esp.o hex2bin.o print_esp.o : print_esp.s as -gstabs -o print_esp.o print_esp.s hex2bin.o : hex2bin.c cc -c hex2bin.c clean: rm *.o print_esp