使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

 wuqi+原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”

 

分别使用 库函数API 和 嵌入式汇编 实现time系统调用

库函数的方法 嵌入式汇编
#include <stdio.h>
#include <time.h>

int main()
{
    time_t tt;
    struct tm *t;
    tt = time(NULL);
    t = localtime(&tt);

    printf("date:%d:%d:%d\n",t->tm_year,t->tm_mon,t->tm_mday);
    printf("time:%d:%d:%d\n",t->tm_hour,t->tm_min,t->tm_sec);

    return 0;

}

 

#include <stdio.h>
#include <time.h>

int main()
{
    time_t tt;
    struct tm *t;
//    tt = time(NULL);
    asm volatile(
        "mov $0,%%ebx\n\t"
        "mov $0xd,%%eax\n\t"
        "int $0x80\n\t"
        "mov %%eax,%0\n\t"
        :"=m"(tt)
    );
    t = localtime(&tt);

    printf("date:%d:%d:%d\n",t->tm_year,t->tm_mon,t->tm_mday);
    printf("time:%d:%d:%d\n",t->tm_hour,t->tm_min,t->tm_sec);

    return 0;

}

 

 

对比两部分程序,发现就是 系统调用time(NULL)和嵌入式汇编 的不同。

 

posted on 2015-04-17 23:05  依风152  阅读(172)  评论(0)    收藏  举报