2010-11-28 16 views
2

Ich versuche, das aktuelle Datum mit Assembly (x86) unter Linux zu erhalten. Ich schrieb das folgende Programm:wie gettimeofday() zu verwenden, um das aktuelle Datum zu erhalten

[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 

würde ich erwarten, dass die TV-struct Adresse auf ebx zu bekommen, so kann ich die Sekunden Zugriff auf 0 (% ebx) und Mikrosekunden in 4 (% ebx), aber den Code nach dem Debuggen Ich bekomme $ ebx = 0x0. Warum?

Antwort

3

Sie haben es rückwärts. Anstatt zu erwarten, dass der Kernel dir über ebx eine struct timeval * gibt, solltest du dem Kernel einen geben, und er wird ihn modifizieren.

Verwandte Themen