Syscall от встроенного asm в x86_64 Linux?

Если Ваши потребности токенизации более сложны, проверяют мою Строку Какао с открытым исходным кодом, маркирующую/анализирующую инструментарий: ParseKit:

http://parsekit.com

Для простого разделения строк с помощью символа разделителя (как ':'), ParseKit определенно был бы излишеством. Но снова, для сложных потребностей токенизации, ParseKit чрезвычайно мощен/гибок.

Также посмотрите документация Токенизации ParseKit .

12
задан starblue 17 October 2009 в 20:06
поделиться

2 ответа

Почему этот вывод мусора вместо корректного завершения моей программы?

Согласно CESA-2009-001 , «Системный вызов 1 - это выход на i386, но запись на x86_64» .

что мне нужно, чтобы он работал в Linux

Используйте порядковые номера системных вызовов из текущего unistd_64.h

Надеюсь, это поможет!

13
ответ дан 2 December 2019 в 20:18
поделиться

Системный вызов 1 - это выход на i386, но, как мне кажется, писать на x86-64.

РЕДАКТИРОВАТЬ: кажется, неточно: Согласно Интернету, который, похоже, не содержит слишком много информации о сборке Linux x86-64, это, по-видимому, ожидаемая установка регистра перед инструкцией системного вызова.

 rax  system call number
 rbx  arg0
 rcx  return address from syscall
 rdx  arg2
 rsi  arg3
 rdi  arg4
 r8   arg5
 r9   arg1    (expected by gcc in %rcx)
 r10-r15  should be saved/restored by C code
 rbp  dito What is dito??
3
ответ дан 2 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: