Assembler #11. Заключение. Приостановка с Nanosleep

Assembler #11. Заключение. Приостановка с Nanosleep

@Torchik_Ru
Доброго времени суток, господа. Сегодня мы рассмотрим посленюю статью из цикла Assembler. В ней мы изучим приостановку работы с использованием Nanosleep и некоторые вещи, которые мы не затронули ранее.

db dw dd dq

Мы изучили "db", или "define bytes", и как эта команда может быть использована для опеределения байтов данных.

  • "byte" - это всегда 8 бит, что могут хранить значения от 0 до 255 (или от -128 до 127).
  • "word" - это определенное количество байтов, возникающих из-за конструкции процессора. Для x86_64 процессоров "word" равен 2 байтам, или 16 битам.
  • "dword"(double-word) - это 4 байта, или 32 бита.
  • "qword"(quadruble-word) - это 8 байт, или 64 бита.

Опеределить их можно используя: dw dd и dq

timespec

"Timespec" - структура, что содержит в себе два значения: tv_sec и tv_nsec. Оба этих значения - 64-битные числа, другими словами они оба - qword. Максимальное значение tv_nsec - 999 999 999, потому что 1 секунда - 1 000 000 000 наносекунд.

sys_nanosleep

Этот системный вызов может использоваться для того, чтобы заморозить программу на определённое время.

Имеет два аргумента: указатели на timespec значения.

Первый аргумент - длина задержки. Второй обычно оставляют пустым (rsi = 0).

Пример

Этот код будет спать на продолжении 5 секунд и 500 000 000 наносекунд, или 5.5 секунд. После этого программа завершается.

Report Page