рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд: рдХреЛрдб рд╣рд╛рд╕реНрдп, рдХреЛрдб рдЪрд╛рд▓, рдХреЛрдб рдирд╣реАрдВ

рдУрд▓реНрдб рдЬреАрд▓рд┐рдм рдмрдирд╛рдо рдиреНрдпреВ рдХреНрд▓реИрдВрдЧ


рдПрдХ рд╡рд┐рд╡рд┐рдз рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ рдШреВрдорддреЗ рд╣реБрдП, рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдвреВрдВрдврддрд╛ рд╣реВрдВ: рдХрднреА-рдХрднреА рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдордЬрд╛рдХрд┐рдпрд╛ рдЯрд┐рдкреНрдкрдгреА рд╣реЛрддреА рд╣реИ, рдХрднреА-рдХрднреА рдпрд╣ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдХреБрдЫ рдордЬрд╛рдХрд┐рдпрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рд╕рдордп-рд╕рдордп рдкрд░ "рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдиреЗрдЯ" рдФрд░ рд╣реЛрдмреЗ рдкрд░ рджреЛрдиреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ - рдХрд╣рддреЗ рд╣реИрдВ, рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдкрд░ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдкреНрд░рд╢реНрди рд╣реИ, рдФрд░ рдХрд╛рдиреВрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдЯреЙрдкреЛрдиреАрдореНрд╕ рдХреЗ рдордЬрд╛рдХрд┐рдпрд╛ рдирд╛рдореЛрдВ рдХрд╛ рдЪрдпрди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдпрд╣рд╛рдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЬреЛ рдореИрдВ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдВрдЪрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдЙрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реВрдБрдЧрд╛ред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, QEMU, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓, рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рдЙрджреНрдзрд░рдг рдЖрдкрдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рдкрддреНрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рдмрджрд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВред рддреЛ рдЖрдЗрдП рдХреЛрдб рдкрд░ рдПрдХ рдмреЗрд╣рддрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдФрд░ рддреБрд░рдВрдд, рдХрд░реНрдиреЗрд▓ рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо рд╣рдореЗрдВ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд╕рд╛рде рдорд┐рд▓рддрд╛ рд╣реИ: рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рджреЛ рдорд╛рдирдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рд╣реИ: clean рдФрд░ distclean ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдХрд░реНрдиреЗрд▓ рдСрдЯреЛрдХреЙрдиреНрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ menuconfig рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реИрдВ: clean , mrproper рдФрд░ mrproper - рд╣рд╛рдВ, рд╣рд╛рдВ, рд╢реНрд░реАрдкреНрд░реЛрдкрд░, рдПрдХ рдХреЛрд░ рдХреНрд▓реАрдирд░ рджреЛ рдмрд╛рд░ рддреЗрдЬреА рд╕реЗ ред


рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдгрд╛рд▓реА рдХреА рдмрд╛рдд рдХрд░реЗрдВ: рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдерд╛, рдЬрдм рдореБрдЭреЗ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ allnoconfig , allyesconfig рдЬреИрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдЖрджреЗрд╢ allyesconfig (рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ allyesconfig .. ред) рдФрд░ рд░рд╣рд╕реНрдпрдордп рд▓рдХреНрд╖реНрдп allrandconfig ред "рдХреНрдпрд╛ рд╡реЗ рдордЬрд╛рдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ," рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рджреЛрд╕реНрдд рдХреЛ рдЗрд╕ рдЕрд╡рд▓реЛрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рд░реНрдердХ рдЖрджреЗрд╢ рдерд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдореИрдВрдиреЗ рдХрд╣рд╛ рдЕрдм рд╣реЛрдЧрд╛, рдПрдХ рддрд░рд╣ рдХрд╛ рдлрд╝реНрдпреВрдЬрд╝рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдкрд░реЗ рдореВрд▓ рдореЗрдВ рдЬреАрд╡рди рд╣реИ: рдкреНрд░рд▓реЗрдЦрди рдХрднреА-рдХрднреА рди рдХреЗрд╡рд▓ рддрдХрдиреАрдХреА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛, рдХрд▓рд╛рддреНрдордХ рдореВрд▓реНрдп рднреА рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рд╕реНрд▓реАрдк рдореЛрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреА рдирд╛рдЬреБрдХрддрд╛ рдФрд░ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рди рдХрд░рдиреЗ рдкрд░ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдЪреЗрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рджреБрдЦреА рд╣реЛрдХрд░ рд▓рд┐рдЦреВрдВрдЧрд╛, рдзреНрдпрд╛рди рджреЗрдВ: <рд╕рдмрд╕реЗ рдЙрдмрд╛рдК рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк> ред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдХреБрдЫ рдЕрд▓рдЧ рдХрд┐рдпрд╛:


 Some warnings, first. * BIG FAT WARNING ********************************************************* * * If you touch anything on disk between suspend and resume... * ...kiss your data goodbye. * * If you do resume from initrd after your filesystems are mounted... * ...bye bye root partition. * [this is actually same case as above] * * ... 

рдЫреЛрдЯреА рдЪрд╛рд▓


рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЬрдм рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдореИрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдВрдЯреНрд░реЛрдкреА рдХреЗ рдХреБрдЫ рд╕реНрд░реЛрдд рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рднрд╛рдЧ рдЧрдпрд╛ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЦреИрд░, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдРрд╕рд╛ рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдПрдХ рдРрд╕рд╛ рдХреЛрдб рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рдЕрдиреБрдХреВрд▓рди, рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ рдЖрджрд┐ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдкрд░ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реНрдерд┐рд░ рдореБрдЦрд░ рд╣реИ:


 /* SPDX-License-Identifier: GPL-2.0 */ // ... /* * This function doesn't exist, so you'll get a linker error if * something tries to do an invalidly-sized xchg(). */ extern void __xchg_called_with_bad_pointer(void); static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { unsigned long ret, flags; switch (size) { case 1: #ifdef __xchg_u8 return __xchg_u8(x, ptr); #else local_irq_save(flags); ret = *(volatile u8 *)ptr; *(volatile u8 *)ptr = x; local_irq_restore(flags); return ret; #endif /* __xchg_u8 */ // ... default: __xchg_called_with_bad_pointer(); return x; } } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрд┐ рдирд┐рд░рдВрддрд░ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдПрдХ switch рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрдЧрд╛, рдФрд░ рдЬрдм рдПрдХ рд╡реИрдз рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╢рд╛рдЦрд╛ default: рдирд╣реАрдВ рд╣реЛрдЧреА default:
рдПрдХ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рдореЗрдВ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд▓рдЧрднрдЧ рд▓рд┐рдВрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ ...


рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ


  • ... рдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд╕реЗ рдПрдХ рдмрд╛рдИрдЯреЗрдХреЛрдб JIT рд╕рдВрдХрд▓рдХ рд╣реИ? рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ eBPF рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрдЯрд┐рдВрдЧ, рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдпрджрд┐ рдЖрдк рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ "рдкрд░рдорд╛рдгреБ" рдЯреВрд▓ рд╕реЗ рдбрд░рддреЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ bpftools рдкреИрдХреЗрдЬ рджреЗрдЦреЗрдВред
  • ... рдХрд┐ рдХрд░реНрдиреЗрд▓ рд▓рдЧрднрдЧ рдкрд╛рдБрдЪ рдорд┐рдирдЯ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рдХрд╛ sendfile рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИ рдЬреЛ рдПрдХ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрд╕реЗ рдПрдХ рд╣реА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдмрддрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рдСрдлрд╝рд╕реЗрдЯ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЙрд╕реА рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ 2 рдЬреАрдмреА рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рддрд╛ред
  • ... рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╣рд╛рдЗрдмрд░рдиреЗрд╢рди рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ - рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЧреНрд░рд╣рдг рдореЗрдВ рднреА рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

QEMU


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрдм рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реЙрдмрд░реНрдЯ рд▓рд╡ рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдХреНрдпреВрдИрдПрдордпреВ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рдЪрдврд╝ рдЬрд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордЭрджрд╛рд░реА рдереАред рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╕реВрдЪрд┐рдпрд╛рдВ рдереАрдВ (рдФрд░ рд╢реБрд░реБрдЖрддреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛрд░реНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ - рдЬреЛ рд╡реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ - рд╕рдВрдХреЗрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрд░рд╕реАрдпреВ рд╕рдмрд╕рд┐рд╕реНрдЯрдо (рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдореИрдВ рдЕрднреА рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИ) рдФрд░, рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдорд╛рди рд╣реИред


рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд╡реНрдпрдХреНрддрд┐ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ? рд╕рдВрднрд╡рддрдГ рдХреЛрдбрд┐рдВрдЧ рд╢реИрд▓реА рдХреЗ рд╕рд╛рдеред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА, рдПрдХ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, рдФрдкрдЪрд╛рд░рд┐рдХ, рджрд╕реНрддрд╛рд╡реЗрдЬ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:


 1. Whitespace Of course, the most important aspect in any coding style is whitespace. Crusty old coders who have trouble spotting the glasses on their noses can tell the difference between a tab and eight spaces from a distance of approximately fifteen parsecs. Many a flamewar has been fought and lost on this issue. 

рдпрд╣рд╛рдВ рдЕрдзрд┐рдХрддрдо рд▓рд╛рдЗрди рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рд╢реНрд╡рдд рдкреНрд░рд╢реНрди рд╣реИ:


 Lines should be 80 characters; try not to make them longer. ... Rationale: - Some people like to tile their 24" screens with a 6x4 matrix of 80x24 xterms and use vi in all of them. The best way to punish them is to let them keep doing it. ... 

(рд╣рдореНрдо ... рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖ рдкрд░ рджреЛрдЧреБрдирд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдРрд╕реЗ рд▓рд┐рдирдХреНрд╕ рдПрдЪрдбреА рд╣реИ?)


рдЕрднреА рднреА рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдкрдврд╝реЗрдВ ред


рдФрд░ рдлрд┐рд░ рд╕реЗ рдЯреНрд░рд┐рдХ


рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ C рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╡рд┐рдХреГрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА рд╕реНрдХрд╛рд▓рд╛ рдпрд╛ рд╕реА ++ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рдЪрдорддреНрдХрд╛рд░ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, softmmu_template.h рдлрд╝рд╛рдЗрд▓ QEMU рдХреЛрдб рдмреЗрд╕ рдореЗрдВ softmmu_template.h рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЗрд╕ рдирд╛рдо рдХреЛ рджреЗрдЦрд╛, рддреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕реЗ рдореЗрд░реЗ рдЯреАрд╕реАрдЬреА рдмреИрдХрдПрдВрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рддрдм рддрдХ рдЯрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╕рд╣реА рдЯреАрдПрд▓рдмреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЖрддрд╛ред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреИрд╕реЗ! рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ :


рддреНрд╡рд░рдг / tcg / cputlb.h:


 define DATA_SIZE 1 #include "softmmu_template.h" #define DATA_SIZE 2 #include "softmmu_template.h" #define DATA_SIZE 4 #include "softmmu_template.h" #define DATA_SIZE 8 #include "softmmu_template.h" 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рде рдХреА рдЖрд╕реНрддреАрди рдФрд░ рдХреЛрдИ рд╕реА ++ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓?


рдРрд╕реА рдлрд╛рдЗрд▓ рд╣реИ: tcg / tcg-opc.h ред рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд░рд╣рд╕реНрдпрдордп рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВ:


 ... DEF(mov_i32, 1, 1, 0, TCG_OPF_NOT_PRESENT) DEF(movi_i32, 1, 0, 1, TCG_OPF_NOT_PRESENT) DEF(setcond_i32, 1, 2, 1, 0) DEF(movcond_i32, 1, 4, 1, IMPL(TCG_TARGET_HAS_movcond_i32)) /* load/store */ DEF(ld8u_i32, 1, 1, 1, 0) DEF(ld8s_i32, 1, 1, 1, 0) DEF(ld16u_i32, 1, 1, 1, 0) DEF(ld16s_i32, 1, 1, 1, 0) ... 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


tcg / tcg.h:


 typedef enum TCGOpcode { #define DEF(name, oargs, iargs, cargs, flags) INDEX_op_ ## name, #include "tcg-opc.h" #undef DEF NB_OPS, } TCGOpcode; 

рдпрд╛ рддреЛ:


tcg / tcg-common.c:


 TCGOpDef tcg_op_defs[] = { #define DEF(s, oargs, iargs, cargs, flags) \ { #s, oargs, iargs, cargs, iargs + oargs + cargs, flags }, #include "tcg-opc.h" #undef DEF }; 

рдпрд╣ рдФрд░ рднреА рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреЗ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдФрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореБрд╢реНрдХрд┐рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИрдВ - рдХреЗрд╡рд▓ рд╕реА, рдХреЗрд╡рд▓ рдХрдЯреНрдЯрд░ред


рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ


  • ... рдХрд┐ рдХреНрдпреВрдИрдПрдордпреВ рди рдХреЗрд╡рд▓ рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЕрдиреБрдХрд░рдг рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрдиреНрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореЗрдЬрдмрд╛рди рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ?

рдЬрд╛рд╡рд╛, рдЬреЗрд╡реАрдПрдо рдФрд░ рдСрд▓-рдСрд▓-рдСрд▓


рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реВрдБ? рдЪрд▓реЛ рдХреБрдЫ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЗрд╡реАрдПрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЦреИрд░, GraalVM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╢рд╛рдпрдж, рдЗрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдирд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдпрд╣ рдорд╣рд╛рдХрд╛рд╡реНрдп рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧреНрд░реЗрдЧрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЪрд▓реЛ рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдЬреЗрд╡реАрдПрдо рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред


рдХрднреА-рдХрднреА рдЬреЗрд╡реАрдПрдо рдХреЛ рд╕рднреА рдкреНрд░рдмрдВрдзрд┐рдд рдереНрд░реЗрдбреНрд╕ рдХреЛ рд░реЛрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдЪрд░рдг рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рддрдерд╛рдХрдерд┐рдд рд╕реЗрдл рдкреЙрдЗрдВрдЯреНрд╕ рдкрд░ рдереНрд░реЗрдбреНрд╕ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдВрдЪ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореЗрдореЛрд░реА рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╢рд░реНрдорд┐рдВрджрдЧреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛? рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЛ рдПрдХ рдЪрд░ рдкрдврд╝рдиреЗ рддрдХ рд╕реАрдорд┐рдд рдХрд░ рд▓рд┐рдпрд╛ред


рд▓рдЧрднрдЧ HQ9 + рдХреА рддрд░рд╣

рдРрд╕реА рдПрдХ рд╣рд╛рд╕реНрдп рднрд╛рд╖рд╛ рд╣реИ - HQ9 + ред рдпрд╣ рдПрдХ "рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╢реИрдХреНрд╖рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрд░реНрдерд╛рддреН, рдЫрд╛рддреНрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:


  • рдХрдорд╛рдВрдб 'рдПрдЪ' рджреБрднрд╛рд╖рд┐рдпрд╛ рдирдорд╕реНрддреЗ, рд╡рд░реНрд▓реНрдб!
  • 'Q' рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЦреБрдж (рдХреНрд╡реАрди) рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ
  • '9' рдкрд░ рд╡рд╣ рдмреАрдпрд░ рдХреА 99 рдмреЛрддрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓ рдЫрд╛рдкрддрд╛ рд╣реИ
  • 'i' рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рдЪрд░ i рдХреЛ рдПрдХ рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ
  • рд╡рд╣ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? ..

рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде JVM рд▓рдХреНрд╖реНрдп рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ? рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдЕрдЧрд░ рдЗрд╕реЗ рд░реЛрдХрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рдЪрд░ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ - рдереНрд░реЗрдбреНрд╕ SIGSEGV рдкрд░ рдЖрддреЗ рд╣реИрдВ, рдФрд░ JVM рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ "рд░рдЦрд░рдЦрд╛рд╡" рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рд░реЛрдХ рджреЗрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдЬрдм рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╕реЗ рдкреВрдЫрд╛ рдЧрдпрд╛ рдХрд┐ рдЖрдк рдПрдХ JVM рдХреЛ рдХреИрд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рдХрд░рддреЗ рд╣реИрдВ? рдЬрд╡рд╛рдм рджрд┐рдпрд╛:


JNIред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬреЗрдПрдирдЖрдИ рдХреЗ рд╕рд╛рде, рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдирд╛ рдСрдкрд░реЗрд╢рди рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЛрдб рд╣реИред рджреБрд░реНрдШрдЯрдирд╛ рди рд╣реЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрд╣рдирдд рдХрд░рдиреА рд╣реЛрдЧреАред

рдордЬрд╛рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдордЬрд╛рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЬреЗрд╡реАрдПрдо рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред


рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрднреА рдЗрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп рд╣реИ: рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХреЛрдб рдкреАрдврд╝реА (рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдореИрдХреНрд░реЛрдЬрд╝ рд╣реИ) рдЗрд╕ рддрд░рд╣ рд╕рдВрд░рдЪрд┐рдд рд╣реИ: рдЖрдк рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХрд╛рд▓рд╛ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рдВрдХрд▓рдХ, рдФрд░ рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред рдлрд┐рд░, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрдЧрд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдХреНрд▓рд╛рд╕рдкреИрде рддрдХ рд╣реА рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢ рджреЗрдЦрдХрд░, рдЙрд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЬрд╡рд╛рдм рдореЗрдВ, рд╡рд╣ рдПрдХ рдПрдПрд╕рдЯреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХреЙрд▓ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


рдореБрдЭреЗ рдореБрдлреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рдордЬреЗрджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред


рдПрдХ рдмрд╛рд░, рд▓рдЧрднрдЧ рджрд╕ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреЗрдмрд┐рдпрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░, рдХреБрдЫ рдХрдорд╛рдВрдб рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░, рдЖрджрддрди рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ man <> , рдЬрд┐рд╕реЗ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЬреИрд╕реЗ "[рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд╛рдо] рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИред рдЬреАрдПрдирдпреВ рдЬреАрдПрдлрдбреАрдПрд▓ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде, рдЬреЛ рдбреАрдПрдлрдПрд╕рдЬреА-рдореБрдХреНрдд рдирд╣реАрдВ рд╣реИред " рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреБрдЫ рдПрдлрдПрд╕рдПрдл рдХреЗ рдХреБрдЫ рдмреБрд░реЗ рдкреНрд░реЛрдкрд░рд╛рдЗрдЯрд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ ... (рдЕрдм рдЪрд░реНрдЪрд╛ рдЧреВрдЧрд▓ рдХреА рд╣реИред)


рдФрд░ рдХреБрдЫ рдЫреЛрдЯреЗ, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХреБрдЫ рд╡рд┐рддрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЧреИрд░-рдореБрдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦрдХ рдиреЗ рдорд╛рдирдХ рдЕрдиреБрдЬреНрдЮреЗрдп рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдмреБрд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ ред рд╣рдБрд╕реА, рд╣рдБрд╕реА, рдФрд░ рдореИрдВ рднреА рд╢рд╛рдпрдж рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдРрд╕реА рдЪреАрдЬ рд▓реЗрдиреЗ рд╕реЗ рдбрд░рддрд╛ рд╣реВрдБ - рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рд▓реЗрдЦрдХ рдЕрдЪреНрдЫреЗ рдФрд░ рдмреБрд░реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред


рдХреЛрдИ рднреА рд╡рд┐рд╡рд┐рдз


рдореВрд░ рдХрд╛рдиреВрди рдХреЗ рджреМрд░рд╛рди рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрдорд╛рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


рдХрдареЛрд░ рдПрд▓рдПрд▓рд╡реАрдПрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд░реЗрдЦрдг рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ:


рдЕрдзрд┐рдХрддрдо рд╕рдВрд░реЗрдЦрдг 1 << 29 рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣рдБрд╕рд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЛрдЪрддрд╛ рд╣реИ : рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ - рд▓реЗрдХрд┐рди рдЬрд┐рд╕реЗ 512 рдорд┐рдм рдкрд░ рд╕рдВрд░реЗрдЦрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░ рдореИрдВрдиреЗ рд░рд╕реНрдЯ рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛, рдФрд░ рд╡рд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ 4096 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП "рдкреЗрдЬ рдЯреЗрдмрд▓" рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрд╛ред рдФрд░ рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреИрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ , рдЗрд╕рд▓рд┐рдП рдЖрдо рддреМрд░ рдкрд░:


рдкреВрд░реЗ 48-рдмрд┐рдЯ рд╕реНрдкреЗрд╕ рдХреЗ рд▓рд┐рдП 4 рдХреЗрдмреА рдкреЗрдЬ рдХреА рдПрдХ рдкреВрд░реА рдореИрдкрд┐рдВрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо 512 рдЬреАрдмреА рдореЗрдореЛрд░реА (256 рдЯреАрдмреА рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдкреЗрд╕ рдХрд╛ рд▓рдЧрднрдЧ 0.195%) рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЧреЗрдЧрд╛ред

рдкреНрд░рд╛рд░реВрдк рд╕рдВрд╕реНрдХрд░рдг - рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ?


рдПрдХ рдмрд╛рд░ рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рддрд╛ рд╣реИ ... рдпрд╛ рдирд╣реАрдВ?


рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмреИрдХрдПрдВрдб рдХрдорд╛рдВрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдмрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ "2.0" рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл "2" рдкрддреНрддреЗред рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдПрдХ рддреБрдЪреНрдЫ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ double getVersion() рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реИ, рдорд╛рдореВрд▓реА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдбреЙрдЯ рднреА рд╣реИ! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрдд рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдерд╛, рдореИрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдмрд╕ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╕рдЯреАрдХрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ред


рд╕рд┐рджреНрдзрд╛рдВрддрдХрд╛рд░реЛрдВ рдФрд░ рдЪрд┐рдХрд┐рддреНрд╕рдХреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╣реЗрдмреЗ рдкрд░ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рджреЗрдЦрд╛ рдерд╛ рдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдиреНрдпреВрдирддрдо рдХреНрд░реИрд╢ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реА рдореЗрдВ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ? int main; - рдПрдХ main рдкреНрд░рддреАрдХ рд╣реИ, рдФрд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ , рдЖрдк рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рд░рд┐рдХрд┐рдб рдиреЗ рдареАрдХ рд╕реЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ int рдмрд╛рдЗрдЯреНрд╕ рднреА рдмрд╣реБрдд рдХрдо рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдХрд╛рд░ рдореЗрдВ 9 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рдпрд╣ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ ... рд╕рдЪ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред


рддреЛ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдЧреИрд░-рд▓реЙрдиреНрдЪрд┐рдВрдЧ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


 $ ldd /bin/ls linux-vdso.so.1 (0x00007fff93ffa000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f0b27664000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0b2747a000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f0b27406000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0b27400000) /lib64/ld-linux-x86-64.so.2 (0x00007f0b278e9000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f0b273df000) $ /lib/x86_64-linux-gnu/libc.so.6 

... рдФрд░ рдЙрд╕реЗ рдорд╛рдирд╣рд╛рдирд┐ рдорд╛рдирд╡ рдЖрд╡рд╛рдЬ :


 GNU C Library (Ubuntu GLIBC 2.28-0ubuntu1) stable release version 2.28. Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 8.2.0. libc ABIs: UNIQUE IFUNC ABSOLUTE For bug reporting instructions, please see: <https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>. 

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЧреЛрд▓реНрдл рдЦреЗрд▓рддреЗ рд╣реИрдВ


рдХреЛрдб рдЧреЛрд▓реНрдл рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд StackExchange рдкрд░ рдПрдХ рдкреВрд░реА рд╕рд╛рдЗрдЯ рд╣реИ - "рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдиреНрдпреВрдирддрдо рджрдВрдб рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ" рдХреА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВред рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдкрд░рд┐рд╖реНрдХреГрдд рд╕рдорд╛рдзрд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рд╡реЗ рдмрд╣реБрдд рдкрд░рд┐рд╖реНрдХреГрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреНрд░рд╢реНрди рдореЗрдВ , рдорд╛рдирдХ рдирд┐рд╖рд┐рджреНрдз рдЦрд╛рдорд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рд╣реИ:


MetaGolfScript рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
MetaGolfScript рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MetaGolfScript-20918060538120485447057557373727272424 рдкреНрд░рд┐рдВрдЯ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рдореЗрдВ рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд░рдоред

рдПрдХ рд▓рд╛рдЗрди рдореЗрдВ



рдЕрдВрдд рдореЗрдВ, рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ? рдпрд╣ emcc рд╕реЗ emcc рд╕рдВрдХрд▓рдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдПрдХ emcc рдЪрд╛рд▓ рд╣реИ:


 $ emcc --help ... emcc: supported targets: llvm bitcode, javascript, NOT elf (autoconf likes to see elf above to enable shared object support) 

Source: https://habr.com/ru/post/hi437832/


All Articles