#define INLINE_SYSCALL(name, nr, args...) \
({ \
unsigned int resultvar; \
asm volatile ( \
LOADARGS_##nr \
"movl %1, %%eax\n\t" \
"int $0x80\n\t" \
RESTOREARGS_##nr \
: "=a" (resultvar) \
: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \
if (resultvar >= 0xfffff001) \
{ \
__set_errno (-resultvar); \
resultvar = 0xffffffff; \
} \
(int) resultvar; })
#define LOADARGS_0
#define LOADARGS_1 \
"bpushl .L__X'%k2, %k2\n\t" \
"bmovl .L__X'%k2, %k2\n\t"
#define LOADARGS_2 LOADARGS_1
#define LOADARGS_3 LOADARGS_1
#define LOADARGS_4 LOADARGS_1
#define LOADARGS_5 LOADARGS_1
кто знает смысл следующего кода ассемблерногочто смысл связанных системных вызовов ассемблерного кода в uclibc для архитектуры i386
#define LOADARGS_1 \
"bpushl .L__X'%k2, %k2\n\t" \
"bmovl .L__X'%k2, %k2\n\t"
может кто-нибудь объяснить мне это % 2 означает третьи параметры в вход и выход ASM так% k2 означает, что и то, что смысл .L__X bpushl и bmovl кажется, нет такой инструкции для ia32
для .L__X '% ebx = 1 \ n \ ti не может понять значение, придавая значение символу .L__X или .L__X'% ebx или имеет некоторые другие значения @ superdesk – Adambynes
.if 1 - \\ name \ n \ t в чем смысл \\ я думаю \ для разрешения значение имени, но \\ использует escape для \, поэтому что здесь используется @ superdesk – Adambynes
Вы, вероятно, прав насчет \\. Он разрешает \, так что макрос имеет в нем '\ name'. Когда используется макрос, '.L__X '% k2' заменяет \ name (я думаю). Это дает вам .if 1 - .L__X '% k2' внутри макроса bpushl. Сам L__X - это макрос ... он выглядит как 1, 2 или 3 в зависимости от регистра. Поэтому '.if 1 - 1' может быть последней строкой ... Но я не уверен ни в одном из этого. – superdesk