Wie kann ich eine system-Zeit mit NASM?
Ich versuche meine Samen Zufallszahlengenerator mit der aktuellen Systemzeit. Wie kann ich den Zugriff auf die system-Zeit mit NASM? (Ich benutze linux)
- Art großer Bearbeiten, aber ich habe versucht, um die Frage annähernd das, was ich dachte, die OP war gefragt....
- Können Sie verwenden Sie die system-call /
/dev
Dateisystem? - Arbeiten QEMU 16-bit-real-Modus-Beispiel: github.com/cirosantilli/x86-bare-metal-examples/blob/... Können Sie system-Aufruf / /dev-Dateisystem?
- Nur so nebenbei, wenn das Zahl-generator verwendet wird, kryptografisch, das ist eine schreckliche Idee. Die Zeit ist nicht entropisch
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese verwendet NASM, und ist von hier.
int 0x80
Schnittstelle, um dorthin zu gelangen.Unter linux:
Pop-die aktuelle unix-Zeit in eax (ersetzen Sie den letzten Befehl, wenn Sie wollen, es tauchte in einem anderen register).
Dies ist ein system-Aufruf sys_time (system-call-Nummer 13), und es gibt den Zeitpunkt zurück, in dem Speicher in die Register ebx, die oben auf dem stack.
Ich würde sagen, je nachdem auf welcher Plattform du bist auf, du musst ein OS-Funktion.
Unter windows, versuchen Sie GetSystemTime. Unter linux versuchen gettimeofday - siehe Verwandte Frage hier.
Mit NASM, wenn Sie sind targeting-Linux-x86-64 haben, können Sie einfach Folgendes tun:
201
entspricht der 64-bit-system-call-Nummer fürsys_time
(siehe hier). Registrierenrdi
auf 0 gesetzt ist, so ist der Rückgabewert nach dem ausführen des Systemaufrufs ist gespeichert inrax
, aber Sie könnte auch machen Sie zu einem Speicherort Ihrer Wahl. Das Ergebnis wird ausgedrückt in Sekunden seit Beginn der Epoche zurück.Mehr Informationen über dieses system nennen kann gefunden werden in der Zeit Mann Seite.