有人可以解释一下以下代码是如何工作的吗?
# if defined(__ELF__)
# define __SECTION_FLAGS ", \"aw\" , @progbits"
/* writable flag needed for ld ".[cd]tors" sections bug workaround) */
# elif defined(__COFF__)
# define __SECTION_FLAGS ", \"dr\""
/* untested, may be writable flag needed */
# endif
asm
(
".section .ctors" __SECTION_FLAGS "\n"
".globl __ctors_begin__\n"
"__ctors_begin__:\n"
".previous\n"
);
asm /* ld ".[cd]tors" sections bug workaround */
(
".section .ctors0" __SECTION_FLAGS "\n"
".globl __ctors0_begin__\n"
"__ctors0_begin__:\n"
".previous\n"
);
Run Code Online (Sandbox Code Playgroud)
同样我们得到了__ctors_end__,__ctors0_end__ 析构函数的位置也是这样获得的.在一些ld bug变通方法之后__ctors_begin__,__ctors_end__执行从指针指向的所有函数 .我不知道汇编程序,这个代码对我来说是不可能解释的. …