正确的内联汇编语句sys_uname和sys_gettimeofday

时间:2019-04-13 19:56:18

标签: c linux system-calls inline-assembly i386

我想编写内联汇编代码,以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));

但这根本不打印任何内容! 这段代码有什么问题吗? (必须有。)

0 个答案:

没有答案