设为首页 加入收藏

TOP

汇编告诉你为什么C++可以对函数重载
2014-11-24 13:57:53 来源: 作者: 【 】 浏览:1
Tags:汇编 告诉 为什么 可以 函数 重载

目标是要把语言最终翻译到native code。因为总不喜欢有虚拟机的语言,虽然平时用着也很爽。喜欢c的高效,但是也喜欢c#、python之类的表达能力强的语言。貌似目前能翻译到native code的语言,表达能力是一个问题,至少没有一些高级特性的支持,编码量就一下子上去了。总是在考虑how to do,而不是what to do。


然后就想,能不能搞个试验,看能否把这几个结合起来,于是就有了上述的想法。先从linux开始吧,毕竟资料比较多,以后如果看着还有点用途,有人加入的话,才照顾windows吧。


综合衡量之后,大体方向是翻译到汇编语言(at&t语法,可以用as来编译),对接glibc的部分功能形成core。毕竟用汇编system call封api,linus、gnu那帮大牛早就做了。在这点上花时间不大值得。


只是兴趣,不喜欢的请绕路,别乱喷。


既然要用到glibc,必须在汇编层面把需要的东西都摸得一清二楚。


在本系列的文章中,我将比较深入地介绍有关汇编、c\c++、glibc之类的知识。也不能说 很系统全面,在做笔记之余,跟大家分享,希望对大家有点用途。


我将使用gnu tool chain系列的工具。


c\c++编译器为gcc,连接器为ld,汇编器为as


因为as虽然是用at&t语法,但是支持的cpu以及instruction都比较多,而且还有各种优化选项,比nasm强大点。毕竟是linux里头的国家队。哈哈。


当然,在windows平台上,结果也应该是一样的。有兴趣的可以使用mingw试试。


废话说多了,开始正题吧。这篇文章结构如下


1、比较c,c++对于类似的函数,翻译到汇编语言里头的区别


2、为什么这么多project,特别是库,要用C,而不用C++【这里纯属个人体会】


先看下面一段C函数 (文件名是1.c)



$ cc -S 1.c


$ ls
1.c 1.s


其中1.s的内容如下


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇uboot中main_loop分析 下一篇Linux字符设备驱动

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)