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 секунд. После этого программа завершается.