В настоящее время я работаю над проектом pintos, и у меня возник вопрос о некоторых макросах сборки, которые включены в проект
#define syscall1(NUMBER, ARG0) \
({ \
int retval; \
asm volatile \
("pushl %[arg0]; pushl %[number]; int $0x30; addl $8, %%esp" \
: "=a" (retval) \
: [number] "i" (NUMBER), \
[arg0] "g" (ARG0) \
: "memory"); \
retval; \
})
Этот макрос вызывается для установки стека для системного вызова только с одним аргументом.Мы выдвигаем один аргумент, номер системного вызова и переходим к ядру.Мы пропускаем только NUMBER и ARG0, мне было интересно, откуда взялись [number] и [arg0] (строчные буквы).Я прочитал несколько документов, но не нашел ответов.Хотелось бы помочь!
Спасибо