我为什么要学习C++反汇编

用户:**937499@qq.c**
用户:****
用户:**87603@qq.co**
用户:****
用户:**883400@qq.c**
用户:**329593@qq.c**
用户:****
用户:**614498@qq.c**
用户:**614498@qq.c**
用户:****
用户:****
用户:****
用户:****
用户:**5597646@qq.**
用户:**4278903@qq.**
用户:**.yu79@163.c**
用户:**4278903@qq.**
用户:**.yu79@163.c**
用户:****
用户:****
北风网和苏州大学深度合作
北风大数据培训正式落户苏大
&&& 零基础大数据课程火热报名中
&&&&&&&&&&&&&&北风网和苏州大学深度合作
北风大数据培训正式落户苏大
&&& 零基础大数据课程火热报名中
&&&&&&&&&&&&&&&
分享:9999+
课程顾问贴心解答
为你推荐精品课程,无论就业还是升职加薪,毫无压力。
名企定制紧随大流
量身打造紧贴企业需求的实用性课程。
系统教学把控效果
集学、测、练为一体的学习系统为你科学的安排学习进度,提高效率。
一线大师1对1指导
课程研发团队内一线资深讲师一对一指导,手把手教学,直到学会。
点播答疑完美结合
每周2-3次直播解答,保证学员日常学习问题能得到解决。
量身定制学习计划
告别杂乱的学习方式,我们会根据你的情况定制学习计划。
特大喜讯:原购买的用户加500即可获得全新升级版课程!
Hadoop是什么,为什么要学习Hadoop?
& & &&Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。
& & &Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
& & &Hadoop带有用Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。本课程的讲解是采用linux平台进行模拟讲解,完全基于真实场景进行模拟现实
亮点一:课程全面升级
& & & 本课程是原热门课程《深入浅出Hadoop实战开发》和《Hadoop应用开发实战》的升级版,在课程内容上,加入了更多hadoop的新特性,比如namenode HA,hdfs federation, Yarn等。Storm作为全新的内容被引入到课程中。在课程使用的案例中,不仅沿用和强化了老课程的经典应用,同时引入了其他经典的案例。
亮点二:技术点全面,体系完善
& & &本课程在兼顾Hadoop课程知识体系完善的前提下,把实际开发中应用最多、最深、最实用的技术抽取出来,通过本课程,你将达到技术的新高点,进入云计算 的美好世界。在技术方面你将彻底掌握基本的Hadoop集群;Hadoop HDFS原理;Hadoop HDFS基本的命令;Namenode的工作机制;HDFS基本配置管理;MapReduce原理; HBase的系统架构;HBase的表结构;HBase如何使用MapReduce;MapReduce高级编程;Hive入 门;Hive结合MapReduce;Hadoop的集群安装;namenode HA;HDFS federation等众多知识点。
亮点三:基础+实战=应用,兼顾学与练
& & 本课程每阶段都安排了实战应用项目,以此方便学生能更快的掌握知识点的应用,如在第一阶段,课程结合HDFS应用,讲解了图片服务器的设计、以及如何 利用Java API去对HDFS操作、在第二阶段;课程结合HBase实现微博项目的各种功能,使学员可以活学活用。在第三阶段:HBase和MapReduce结合 时下了实现话单查询与统计系统,在第四阶段,Hive实战部分,通过实战数据统计系统,使学员在最短的时间内掌握Hive的高级应用。
亮点四:讲师丰富的电信集团云平台运作经验
& & &讲师明义拥有丰富的电信集团工作经验,目前负责云平台的各方面工作,并拥有多年的企业内部培训经验。讲课内容完全贴近企业需求,绝不纸上谈兵。
hadoop版本:hadoop 2.4.1
hive版本:hive 0.13.1
hbase版本:hbase 0.98.6.1
centos版本:6.5
&01,课程介绍,HDFS架构和原理,搭建CentOS开发环境
& Hadoop背景
& HDFS设计目标,应用场景,架构分析
& 使用Virtual安装CentOS虚拟机
& 虚拟机环境配置
02,hdfs单机和集群的配置安装
& Hadoop单机版安装和配置
& Hadoop集群安装和配置
& Hadoop命令行和WebUI的使用
03,hdfs应用-云存储系统(1)
& 云存储系统介绍和基本架构
& 搭建Eclipse和Maven开发环境
& 使用Maven创建并配置Struts2应用
& 使用bootstrap搭建UI框架
04,hdfs应用-云存储系统(2)
& 安装和配置Redis
& 用户管理模块开发
05,hdfs应用-云存储系统(3)
& gson介绍和使用实例
& 实现普通的文件上传,删除,下载
06,hdfs应用-云存储系统(4)
& 实现基于HDFS的上传,下载和删除
& HDFS小文件管理方式:SequenceFile和Har
07,深入hdfs-NameNode和DataNode
& hdfs的架构介绍
& hdfs如何读写文件
& FSImage和EditLog
& Rack Awareness
& hdfs基本管理
08,深入hdfs-HDFS federation
& HDFS节点管理
& HDFS升级和回滚
& HDFS Federation
& 如何使用ViewFS
09,namenode HA
& zookeeper配置
& namenode HA(双机)安装和配置
10,yarn和mapreduce
& 配置Yarn(单机和集群)
& MapReduce的工作原理
& 第一个MapRedcue程序
& Yarn命令行工具
11,mapreduce应用-搜索提示(1)
& 工作原理介绍(Ajax)
& 使用JQuery的AutoComplete控件搭建UI
12,mapreduce应用-搜索提示(2)
& 继承Mapreduce程序
& 使用Redis保存中间数据
& 如何对增量和全量数据进行统计
& &潜在好友推荐&算法介绍
13,mapreduce的采样工具和partitiion
& 采样和分区的工作原理
& RandomSampler,InputSampler,IntervalSampler
& TotalOrderPartitioner(全局排序)
14,Map Join和Reduce Join
& Reduce side join
& Map side join
& 如何自定义数据类型
& 如何使用DistributedCache
15,mapreduce应用-PageRank
& PageRank算法详细讲解
& 如何用mapreduce实现PageRank算法
16, Hive入门
& Hive的架构
& CLI, Hive Server, HWI介绍
& 配置Hive,使用Mysql存储元数据
& CLI的基本使用
17, hive应用-搜索提示(1)
& Tomcat日志解析
& 使用正则表达式解析Tomcat日志
& 在查询中使用正则表达式
18, hive应用-搜索提示(2)
& 在hive查询中调用python脚本实现Redis插入
19,HQL(1)
& HQL基础:DDL,DML
& 数据类型:原子与集合
& TextFile的默认编码及自定义编码
20,HQL(2)
& Hive查询
& 正则表达式,基本函数,集合函数,表函数
& 嵌套查询,case when语句,like和rlike
& Groupby和Having等
21,Hive自定义函数
& 如何编写自定义函数
& 在自定义函数中连接Redis
& 在自定义函数中使用CacheFile
22,Compression in Hadoop
& Compression in Hadoop介绍
& 在MapReduce和Hive中使用Compression
& 安装和配置lzo
23,24, HBase入门
& Hbase架构
& Hbase集群安装
& 使用HBase Shell
25,26,27,HBase应用 - 话单查询
& Hbase Java API
& Struts2 and JSP
& Jquery Datatable and Datepicker
28,29,30,HBase应用 - 微博
& 表结构设计
& 关注好友
& 我的主页
&31,32,Storm入门
& Storm架构及原理介绍
& 安装Storm
& 实现第一个topology
& Storm的grouping
33,Queue spout和DRPC
34,35,storm应用 - 语音话单计费
& 搭建计费topology
& 实现Queue spout和Mysql入库bolt
& 实现漫游和长途类型计算
& 计费逻辑的实现
& 整合所有功能到topology中
& 各个功能模块的验证
您暂未登录不能收藏!请登录后在进行课程的收藏!逆向工程核心原理
源代码及示例文件中文下载地址:http://blog.csdn.net/reversecore/article/details/
(作者原博 /115,/)
本书QQ群:
本书通过50多章的内容十分详尽地介绍了逆向工程核心原理。书中不仅包括作者以自己在Ahnlab研究所(AhnLab,中文名称为:安博士。1995年成立的安博士有限公司是韩国首家从事开发杀毒软件的企业,其总部设在首尔,是全球首批开展信息安全技术研发的企业之一。2000年10月在北京成立了中国代表处,宣布正式进入中国安全市场,并于2003年成立了北京安博士公司。/)多年的实际工作经验为基础亲自编写的大量代码,还包含了作为逆向工程师必须了解的各种技术和技巧,想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过本书获得很大帮助。
韩国逆向分析领域龙头之作!
本书内容讲解非常细致,涵盖了从恶意代码分析基础知识到高级技术的全部内容,系统而有条理,语言简洁,通俗易懂,并在讲解中选配了恰当的示例程序,使内容更易理解。对于最近出现的恶意代码中的各种常用技术,本书都做了详细讲解,无论你是初学者还是分析专家,都能从中获益。书中体现了作者丰富的开发与分析经验、培训与演讲的经验、与逆向工程各水平层级人员的沟通经验,充分解答了技术人员关于逆向工程的各种困惑和技术难点。
代码逆向技术基础
第1章 关于逆向工程
1.3 代码逆向准备
1.4 学习逆向分析技术的禁忌
1.5 逆向分析技术的乐趣
2.2 调试HelloWorld.exe程序
2.3 进一步熟悉调试器
2.4 快速查找指定代码的四种方法
2.5 使用“打补丁”方式修改“Hello World!”字符串
第3章 小端序标记法
第4章 IA-32寄存器基本讲解
4.2 IA-32寄存器
第6章 分析abex' crackme#1
6.3 将参数压入栈
第7章 栈帧
7.3 设置OllyDbg选项
abex' crackme #2
8.3 开始调试
8.4 分析crackme
第9章 Process Explorer——最优秀的进程管理工具
第10章 函数调用约定
第11章 视频讲座
11.3. 小结
第12章 究竟应当如何学习代码逆向分析
第二部分 PE文件格式
第13章 PE文件格式
13.3. PE头
13.4. RVA to RAW
13.7 高级PE
13.8. 小结
第14章 运行时压缩
14.2. 运行时压缩器
14.3. 运行时压缩测试
第15章 调试UPX压缩的notepad程序
15.4. 快速查找UPX OEP的方法
第16章 基址重定位表
16.2. PE重定位时执行的操作
16.3. PE重定位操作原理
第17章 从可执行文件中删除.reloc节区
第18章 UPack PE文件头详细分析
18.5. 分析UPack的PE文件头
第19章 UPack调试 - 查找OEP
第20章 “内嵌补丁”练习
第三部分 DLL注入
第21章 Windows 消息钩取
21.5. 调试练习
21.6. 小结
第22章 恶意键盘记录器
22.2. 键盘记录器的种类与发展趋势
防范恶意键盘记录器
23.3. DLL注入的实现方法
23.4. CreateRemoteThread()
23.5 AppInit_DLLs
23.6. SetWindowsHookEx()
23.7. 小结
24.3. DLL卸载练习
第25章 通过修改PE加载DLL
源代码 - myhack3.cpp
修改TextView.exe文件的准备工作
修改TextView.exe
第26章 PE Tools
中场休息——代码逆向分析的乐趣
27.3. 练习示例
27.4. CodeInjection.cpp
27.5. 代码注入调试练习
27.6. 小结
第28章 使用汇编语言编写注入代码
编写代码注入程序
28.5. 调试练习
28.6. 详细分析
28.7. 小结
第29章 API钩取:逆向分析之“花”
29.4. 技术图表
第30章 记事本WriteFile() API钩取
调试技术流程
30.4. 练习
30.5. 工作原理
30.6. 源代码分析
关于调试器
计算器显示中文数字
调试被注入的DLL文件
第33章 隐藏进程
33.3. 进程隐藏
33.4. 练习 #1(HideProc.exe,stealth.dll)
33.5. 源代码分析
33.6. 全局API钩取
练习#2(HideProc2.exe,Stealth2.dll)
33.8. 源代码分析
33.9. 利用“热补丁”技术钩取API
33.10. 练习 #3 - stealth3.dll
33.11. 源代码分析
使用“热补丁”API钩取技术时需要考虑的问题
33.13. 小结
第34章 高级全局API钩取- IE连接控制
34.2. IE进程结构
34.3. 关于全局API钩取的概念
34.4. ntdll!ZwResumeThread() API
34.5. 练习示例 - 控制IE网络连接
34.6. 示例源代码
34.7. 小结
第35章 优秀分析工具的五种标准
35.4. 熟练程度的重要性
第五部分 64位&Windows内核6
第36章 64位计算
36.2. 编译64位文件
第37章 x64处理器
37.2. 练习 - Stack32.exe & Stack64.exe
第39章 WinDbg
第40章 64位调试
40.3. PE32:WOW64Test_x86.exe
40.4. PE32+:WOW64Test_x64.exe
40.5. 小结
41.5. 练习 - 删除ASLR功能
第42章 内核6中的会话
第43章 内核6中的DLL注入
43.2. 原因分析
43.3. 练习-
使CreateRemoteThread()正常工作
43.4 稍作整理
43.5. InjectDll_new.exe
InjDll.exe - DLL注入专用工具
第六部分 高级逆向分析技术
第45章 TLS回调函数
45.3. TLS回调函数
45.4. 练习 #2 - TlsTest.exe
45.5. 调试TLS回调函数
45.6. 手工添加TLS回调函数
45.7. 小结
第46章 TEB
TEB访问方法
46.3. 小结
第47章 PEB
47.2. PEB的重要成员
47.3. 小结
48.2. SEH练习示例 #1
48.3. OS的异常处理方法
48.4. 异常
48.5 SEH详细说明
SEH练习示例 #2(seh.exe)
48.7. 设置OllyDbg选项
48.8. 小结
49.3. IA-32指令格式
49.4. 指令解析手册
49.5. 指令解析练习
49.6. 指令解析课外练习
49.7. 小结
反调试技术
第50章 反调试技术
50.2. 反调试破解技术
50.3. 反调试技术的分类
第51章 静态反调试技术
51.3. NtQueryInformationProcess()
NtQuerySystemInformation()
NtQueryObject()
ZwSetInformationThread()
TLS回调函数
动态反调试技术
Timing Check
高级反调试技术
53.5. Stolen Bytes(Remove OEP)
Debug Blocker(Self Debugging)
第八部分 调试练习
调试练习1 - 服务
DebugMe1.exe示例讲解
服务进程的调试
服务调试练习
调试练习2 - 自我创建
示例程序源代码
调试练习 3 - PE映像切换
调试练习 4 - Debug Blocker
调试练习 - DebugMe4.exe
57.4. 第一次调试
57.5. 第二次调试
57.6. 第三次调试
第四次调试
57.8. 第五次调试
57.9. 第六次调试
第七次调试
李承远,目前在Ahnlab研究所从事恶意代码分析工作,并运营逆向工程的专门博客网站。 为把逆向工程技术广泛传播而不懈努力中并积极地参加各种领域的活动,乐于与读者进行知识共享。
其他购买方式?
本书是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何...
本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想...
本书是JavaScript超级畅销书的最新版。ECMAScript 5 和HTML5在标准之争中双双胜出,使大...
通过学习本书,你将能够:
掌握最新的语言细节,包括Java 8的变化
使用基本的Java句法学习面向对...
本书作者是世界顶尖的Web性能工程师,他在书中深入浅出地讲解并演示了针对TCP、UDP和TLS协议的性能优化最...我为什么要学习C++反汇编
从6月7日开始到今天已经有5天了,在这5天的业余时间(工作之余)里终于系统的完成了C++反汇编的大部分问题的学习,今天写篇总结,算是对这几天学习的总结。
首先我想说明的一个问题就是我为什么要花时间研究C++反汇编?
这事得从笔者遇到的一个问题开始说起,大约2周前我们项目做在开发过程中遇到了一个Crash的问题,由于只有客户提供的一个.dmp文件,我们只能从这个地方入手,说起来很奇怪,从C++代码的角度根本看不出来问题,我找来了一个传说中的公司的大牛,大牛就在我面前给我详细的分析了一遍这个转储文件,感觉他看反汇编出来的代码就像看C++源代码一样,看问题也会更透彻,这个问题分析结束了之后笔者觉得应该在这方面稍微研究一下,于是有了最近的几篇文章。
我是怎么研究的
说起汇编代码,最开始接触是上大学的时候,学校教的IBM-PC汇编语言,当时觉得还成,用汇编写些东西还算顺利,后来大三以后在做在做嵌入式开发(ARM,DSP开发笔者都略懂)的时候也写过一些汇编的代码,那么为什么看C++反出来的汇编我突然看不懂了呢?
首先就是对不上号,看到汇编代码,不知道对应的C++代码应该是什么样子的,于是在这几天里面我写了很多的demo, 试图找到两者之间的对应关系,包括:
1.函数调用
2.虚函数处理
4.This指针
6.参数传递
终于把这两者之间的对应关系找到了,找到了这两者的对应关系以后,再去看反出来汇编感觉是有如神助,行云流水,不敢说全懂了,但是大部分已经打通了。
总结,建议和致谢
感谢大牛让我见识到了C++反汇编有东西需要学,其实学习这东西不是说一个人有多牛,重要的是你应该根据自己的情况知道自己欠缺哪方面的知识,并且知道如何去补上这些东西,如果有需要同样知识的朋友,建议作代码对比,个人觉得这是一个捷径。如果对这方面有什么问题欢迎一起讨论,共勉..
阅读(...) 评论()君,已阅读到文档的结尾了呢~~
汇编语言简单讲解
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
汇编语言简单讲解
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口对于理工 科学生来说,这个答案可能很简单,因为这是一门必修课。而对于来说选择一门编程语言,在某种程度上,对职业生涯的发展会产生重大的影响,所以必须慎 之又慎。那么,为什么要选择一门诞生了将近半个世纪的语言?本文不是老生常谈的废话,如:”C 语言是编程的基础”、”学好 C 语言,走遍天下都不怕”等等,本文力争详尽而又有理的回答这个问题,旨在成为最好的为什么要学习和使用 C 的文章。
二、C 语言
C 语言是由美国 AT&T 贝尔实验室的研究员 Dennis Ritchie 在 B 语言的基础上,最初作为改造 Unix 操作系统的开发语言,并伴随着 Unix 操作系统兴起而流行,后来,随着微型计算机的发展,C 开始被移植到其他操作系统平台上,成为独立的程序设计语言。
下图摘自 TIOBE 编程语言排行榜,过去 30 年 90% 时间里 C 都是独领风骚的,仅偶尔被 Java 超越:
那么是因为一门语言一直位于排行榜的第一名就该去学习和使用吗?显然不是,人云亦云是程序员的大忌。为操作系统而生的标签注定了 C 不可能平庸,实话实说,C 是一门很难学习和使用的编程语言,没有编译原理、操作系统和计算机体系结构扎实的基础知识,根本不可能把 C 学的明白、用的顺手。C 作为一门工程实用性极强的语言,提供了对操作系统和内存的精准控制,高性能的运行时环境,源码级的跨平台编译等优点,才是我们必须学习和使用 C 的理由。
同时,幸运的是 C 也是个有趣的东西,对编程的认知越深,就会越觉得有意思,我简单列举一些 C 的优点:
2.1)结构化设计语言,语法清晰、结构简单,模块化使得程序的各个部分除了必要的信息交流外彼此独立,便于开发、调试以及调试。
2.2)运算符多,把括号、赋值、强制类型转换等都作为运算符处理,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
2.3)数据结构丰富,能实现各种复杂的数据类型的运算,引入指针、结构体概念使程序效率更高。
2.4)为操作系统而生,可以像汇编语言一样对位、字节和地址进行操作,允许直接访问物理地址对硬件进行操作,把高级语言的基本结构和语句与低级语言的实用性结合起来。
2.5)程序执行效率高,一般比汇编程序生成的目标代码效率低 10%~20%。
2.6)可移植性好,C 语言抽象了针对 CPU 编程的细节,能广泛应用于针对大型操作系统和系统软件的编写。
2.7)具备强大的绘图功能,和 C++ 一样也可以写出很优雅的二维、三维图形和动画。
有人说,C 是 C++ 的子集,C 能做到的事,C++ 一样能做到,并且还可以做的更好,如:三大面向对象特性、GUI 编程,诚然,我承认在 GUI 编程领域 C++ 占据着绝对的统治地位,至今无人能撼动。但真的有必要用 C++ 来替代 C 完成工作吗?很多时候 C++ 解决问题的思路真的比 C 更先进吗?
三、C 和 C++ 比较
写到这一 段的时候我有一种战战兢兢、如履薄冰的感觉,毕竟 C、C++ 是广大程序员都很熟悉东西,打起嘴炮来也是极其恐怖的,其实在关乎信仰的问题上,任何的争论都是无止境的,也是无意义的。我希望大家不要把大量精力用来争 论纯粹的语言优劣上,而是去思考如何的正确的把事情做好,什么是正确的做事——快速高效的开发,保障快速稳定的运行,快速简单的维护。
下图是嘴炮大神 Linus Torvalds 当年抨击 C++ 和他周围那些 C++ 大牛程序员们的犀利言辞,其实我个人并不欣赏 Linus 的个人风格,我还是希望大家能心平气和的谈谈 C 相比 C++ 的一些优点和现状:
3.1)隐式操作:C 简单直接、结构清晰,每行代码都能清楚的被反汇编成相应的语句,系统会严格按照你的代码去执行。而 C++ 则不尽然,简单的语句也说不清楚究竟有多少次构造和拷贝,这样编写底层代码是完全不行的,底层需要精准和严格的控制。
3.2) 语言接口:现代软件工程项目的开发,不但对性能有很高要求,对于语言接口的对接能力也有很高要求,因为偌大的一个项目很少仅使用一种语言来进行开发,对于 底层,C++ 对内存和硬件的控制不如 C 简洁精准;对于很多动态语言和中间件,如:PHP、Python 和 Apache、Redis,都受了 C 的很大影响,甚至就是 C 开发出来的东西,对接起来非常方便。没错儿,其实 C++ 采用迂回的方式也能对接的,但是,远远不如 C 方便,开发和维护成本非常高。
3.3)硬件层:
3.2.1&分配内存:系统加电后运行,经过汇编初始化栈,然后再跳转到 C 语言的 start_init() 函数去,这时候内存分配机制都还没有建立,C++ 如何定义类?如何实例化对象?
3.2.2&标准库依赖:C 的所有特性都可以不依赖任何库运行,如有必要,可以按照特定需求自己编写库。
3.2.3&处理器兼容:C++ 的类是依赖基地址+偏移地址的寻址方式,很多微处理器只有简单的给定地址寻址,不支持一条语句实现 base + offset 的寻址机制,很多 C++ 代码编译出来需要更多的指令来运算地址,导致性能下降了太多。
3.4)应用层:C++ 在做应用层尤其是 GUI 编程,这是 C++ 的传统强项,我一直坚持 C 也能优雅的做出图像和动画,但开发效率确实较 C++ 低很多,最近有个很火的 RUST 语言,号称是未来唯一能取代 C++ 的编程语言,感兴趣的同学可以多关注下。
下面我列举了 10 多个目前热门的发展方向,粗略的介绍了下列项目里最常用的编程语言:技术分享
由上图可知,操作系统、编译原理、数据结构与算法等等基础知识,是深入理解、掌握和灵活运用 C 的重要前提,现阶段程序员职业生涯超过一半的热门方向直接或间接与 C 有关,我想,学好 C 的重要性也就不言而喻了。

我要回帖

 

随机推荐