1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include <time.h> int main(void) { time_t tt; struct tm *t; //time系统调用非常方便 tt = time(NULL); //内嵌汇编替换time系统调用 asm volatile ( //清空ebx寄存器 "mov $0,%%ebx\n\t" //系统调用一般是通过eax保存系统调用号,time在32位系统中调用号为13,因此传递13到eax寄存器 "mov $0xd,%%eax\n\t" //调用int 0x80指令,陷入内核态,进行系统调用 "int $0x80\n\t" //把结果eax寄存器结果保存在变量tt中 "mov %%eax,%0\n\t" : "=m" (tt) ); t = localtime(&tt); fprintf(stdout,"%s",asctime(t)); return 0; }
|