- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在关注 this tutorial在 x86 汇编上。到目前为止,每个示例都使用作者称之为“c-driver”的程序,用汇编模块编译,用于某种“初始化”。像这样的东西:
int main(void) {
int ret = asm_main();
return ret;
}
然后使用 C 调用约定正常编写 asm_main 函数。我想知道 C 编译器生成的所需初始化究竟是什么,以及它是否可以以可移植的方式完成。
信息:我在 Windows XP,32 位机器上,使用 NASM 汇编程序和 mingw32-gcc 进行链接。
最佳答案
初始化不是由 c 编译器生成的,它是 c 库的一部分(这使得为每个操作系统/处理器定制更容易)。
有问题的代码在 windows/unixy 系统上通常非常简单 - 通常会进行一些库初始化(打开 STDIN、STDOUT、STDERR、设置时区等)、设置环境、处理传递给 main 的命令行;捕获 main() 的返回并调用 exit 等。
大多数 c 库中的启动代码位于名为 crt0.c、crt1.c 或类似文件(crt = c 运行时)的文件中。
在更原始或裸系统上,它还会设置堆栈和其他寄存器并清除 BSS 数据区域 - 在这种情况下,它通常在汇编程序中(通常是 crt0.S)。
这是 BSD c 启动代码的链接 - link text
mingw for windows 的启动代码在 crt1.c 中 - http://mingw.cvs.sourceforge.net/viewvc/mingw/runtime/
关于c - x86 程序集 : What's the main prologue and epilogue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1724594/
某些 ECMAScript 环境允许通过 Directive Prologue 切换到特殊模式。 ECMAScript 5 有“使用严格”和其他如 asm有自己喜欢的“使用asm”。 Directiv
我使用 apktool 反汇编了一个简单的 android 应用程序,它生成了一些 smali 代码。其他事情是可以理解的,但我不明白 smali 代码中 .prologue 的含义。请帮助我 这里其
我使用基于 skeljs 框架的 HTML5up Prologue。 http://html5up.net/uploads/demos/prologue/ 我希望左侧的菜单导航始终隐藏,就像在窄 Vi
我正在关注 this tutorial在 x86 汇编上。到目前为止,每个示例都使用作者称之为“c-driver”的程序,用汇编模块编译,用于某种“初始化”。像这样的东西: int main(void
采用空程序 //demo.c int main(void) { } 在默认优化下编译程序。 gcc -S demo.c -o dasm.asm 我得到程序集输出为 //Removed labels
我是一名优秀的程序员,十分优秀!