Номера системных вызовов
От: plastictown Норвегия  
Дата: 12.12.18 00:03
Оценка:
Доброго времени суток! Дабы не заплесневеть, решил попробовать написать что-нибудь на асме и собрать gas'ом. Вроде бы ничего сложного — распихиваю аргументы по регистрам и вызываю int 0x80. Для write работает. Захотел вызвать, к примеру, getcwd, полез в unistd_x32.h и unistd_64.h. Там написан номер 79 для x86_64 и 79 + 0x40000000 для x86 на 64-битной системе (из unistd.h). Это место непонятно мне. Я собираю с флагом -m32 и вот какой номер будет у системного вызова в этом случае? При указании 79 strace говорит не помню точно какой вызов делается то ли poll() то ли nanosleep(), короче долго я ковырялся, так и не получилось. Или действительно писать эти жуткие числа 0x40000000 + N? Извиняюсь за немного сумбурное сообщение, просто ночь Всем заранее спасибо!
syscall gnu assembler
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.