2010-11-28 3 views
2

J'essaye d'obtenir la date actuelle en utilisant assembly (x86) sous Linux. J'ai écrit le programme suivant:comment utiliser gettimeofday() pour obtenir la date actuelle

[BITS 32] 

%assign SYS_GETTIMEOFDAY  78 

[SECTION  .text] 
[GLOBAL _start] 
_start: 
     ;get the system date 
     mov  dword eax, SYS_GETTIMEOFDAY 
     int  byte 0x80 
     test eax, eax 
     js  error 
done: 
     convert 
error: 
     whatever 

Je vous attendre à obtenir l'adresse struct TV sur EBX pour que je puisse accéder aux secondes à 0 (% EBX) et microsecs en 4 (% EBX), mais après le débogage du code je reçois $ ebx = 0x0. Pourquoi?

Répondre

3

Vous l'avez en arrière. Au lieu d'attendre que le noyau vous donne un struct timeval * via ebx, vous devriez en donner un au noyau, et il le modifiera.

Questions connexes