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
