Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странным именем, внутри которой никакой конкретики нет(а FASM даже в чистом виде ассемблировать эту функцию не хочет из-за слишком длинного адреса для Lea)
Ну в glibc это просто файловые дескрипторы 0, 1 и 2
Ну под виндой это не так работает, там именно из каких-то непонятных недр достается
Стикер
00007FFE5EF906E0 mov dword ptr [rsp+8],ecx 00007FFE5EF906E4 mov eax,dword ptr [rsp+8] 00007FFE5EF906E8 imul rax,rax,58h 00007FFE5EF906EC lea rcx,[7FFE5F099C30h] 00007FFE5EF906F3 add rcx,rax 00007FFE5EF906F6 mov rax,rcx 00007FFE5EF906F9 ret
😁 Действительно фигня какая-то. Особенно первые две строчки очень крутые.
Там без оптимизаций
Так сделай оптимизацию.
А зачем, мне же понять надо что она там делает
С оптимизацией будет понятнее. Он без оптимизации ведёт себя как генератор мусора.
Ну я просто вижу код и могу понять из какого исходника он генерировался
А зачем тебе вообще понимать, как в каком-то там высокоуровневом языке устроены stderr?
Да мне в принципе было бы все равно, если бы я мог как-то ещё получить дескриптор
Дескриптор ввода? Так ведь через WinAPI.
Так нет, мне надо получить дескриптор который можно какому-нибудь fputs скормить
по структуре кода это получение адреса в структуре
Ты пробовал передавать из GetStdHandle?
Обсуждают сегодня