вот такой код:
int R_EAX, R_ESI;
void test(void)
{
asm volatile ("" : "=a" (R_EAX), "=S" (R_ESI));
}
порождает вот такой ассемблер.
.globl test
.type test,@function
test:
pushl %esi
#APP
#NO_APP
movl %eax,R_EAX
movl %esi,R_ESI
popl %esi
ret
вопрос: почему gcc сохраняет/восстанавливает %esi
(в отличие от %eax)? %esi ведь фигурирует только в
output list.
на такое поведение закладывается, например, switch_to(),
но я не могу найти, где это поведение документированно.
Ответ на:
комментарий
от no1sm
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от jek_
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от Murr
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.