我想编写内联汇编代码,以H:M格式和机器名称(?)打印当前时间。
struct timeval tv;
struct tm *ptm;
int dummy;
__asm__ volatile("int $0x80"
: "=m" (tv), "=a" (dummmy)
: "1" (SYS_gettimeofday), "b" (&tv), "c"(0)
);
ptm = localtime((time_t *)&tv.tv_sec);
strftime(time_string, sizeof(time_string), "%H:%M ", ptm);
write(out, time_string, strlen(time_string));
这行代码为我节省了时间,但它不正确,首先它跳到00:21,然后跳到01:00,但正确的时间是21:47。
下一个代码应该获取计算机名称或服务器名称(不确定其名称)。
struct utsname stroj;
__asm__ volatile("int $0x80"
: "=m" (stroj), "=a" (dummy)
: "1" (SYS_uname), "b" (&stroj), "c" (0)
);
write(1, stroj.nodename, strlen(stroj.nodename));
但这根本不打印任何内容! 这段代码有什么问题吗? (必须有。)