Вопросы к Поиску с Алисой
Разница между системными вызовами в различных ассемблерных средах может заключаться в особенностях реализации механизма системных вызовов для кода 32- и 64-битной разрядности. www.cyberforum.ru
Для 32-битного кода (x86 ABI, архитектура i386) есть два варианта вызова системных функций: www.cyberforum.ru
Для 64-битного кода в Unix System V ABI, который обязателен как для Linux, так и для других юниксов, совершение системного вызова требует положить код вызова в регистр rax, а параметры к нему (до 6) — в регистры rdi, rsi, rdx, rcx, r8, r9, и дополнительные параметры (если есть) — на стек. www.linux.org.ru Затем используется инструкция syscall и проверяется rax для получения кода возврата, где 0 обычно означает отсутствие ошибок. www.linux.org.ru
Также в разных ассемблерных средах для реализации системных вызовов могут использоваться различные макросы, например, в NASM это макросы lsyscall и lsyscallr, которые загружают параметры в регистры в прямом и обратном порядке. www.cyberforum.ru