2022 年 04 月 - 8 文章

Linux x86 程序启动-怎么执行到main方法 - Linux x86 Program Start Up or-How the heck do we get to main [翻译][注解版] 有更新!

  |   0 评论   |   1,565 浏览

译文

原标题: Linux x86 Program Start Up or - How the heck do we get to main()? by Patrick Horgan

摘要:

整篇文章大意就是要给我们介绍在main函数执行前要做什么.或者说main方法整体在程序的运行流程中.处于哪一个环节.
然后主体的串流程是在函数: __libc_start_main 因为这个是gcc, 编译的有可能是cpp文件. 另外即使是c语言.
也有可能的一些全局的 construct函数和 deconstruct 函数.
你也可以在知乎阅读此文: https://zhuanlan.zhihu.com/p/521205296

GNU GCC C调用约定(cdecl)和栈帧结构浅析 有更新!

  |   0 评论   |   1,667 浏览

这篇文章不是为了完整的描述各种调用约定的细节. 主要是为了解决实际开发中遇到的基本问题的一个原理性的总结.
通过这篇文章,你会对C语言的栈帧结构有一个基础的认识. 但是更多的细节可能没有提供.

注: 你也可以在我的知乎阅读此文: https://zhuanlan.zhihu.com/p/522729238

X86汇编语言风格比较: AT&T 和 Intel 风格 有更新!

  |   0 评论   |   2,137 浏览

大家使用Windows平台的研究较多. 基本接触的程序是Win平台的. IDE用Visual C++ , 自然一般也只会接触到$MS的编译器. 而微软家使用的是Intel 风格的汇编语言. 而在开源界,特别是基于GCC的编译器是使用的是AT&T风格的汇编 . 这里简单记录下两者的区别. 以备查. Linux小白. 如有纰漏, 大家请轻拍.
注: 这里是为了研究语言底层的实现机制,同时研究一些JVM的底层实现逻辑需要. 所以需要对栈帧的结构进行较细致的研究. 因此需要了解编译后的语言的反汇编.