Правильный оператор встроенной сборки для sys_uname и sys_gettimeofday - PullRequest
0 голосов
/ 13 апреля 2019

Я хочу написать встроенный код сборки для распечатки текущего времени в формате 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));

Но это вообще ничего не печатает!Что-то не так с этим кодом?(Должно быть.)

...