程序员的自我修养总结(一)


第二章 编译和链接

1.        gcc hello.c

./a.out

预处理——编译——汇编——链接

2.    预处理:预编译 gcc –E hello.c –o hello.i或者hello.c >hello.i

源文件和头文件被预编译器cpp编译成.ii(c++)    .i(c)文件,预编译处理规则:

[1]      将#define删除,展开所有宏定义

[2]      处理所有条件预编译指令,比如“#if”,“#ifndef”,“endif”,“else”

[3]      处理“#include”预编译指令,将包含的文件插入到预编译指令的位置

[4]      删除所有的注释“//”“/****/”

[5]      添加行号和文件名标识,比如#2“hello.c”2,便于编译时报错警告便以其产生条使用的行号信息

[6]      保留所有的#pragma编译器指令

3.    编译:gcc  –S hello.i  -o hello.s

编译就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生产相应的汇编代码文件。预编译和编译合并成一个cc1的程序

4.    汇编ashello.s –o hello.o或者gcc –c hello.s –o hello.o

将汇编代码转变成及其可移植性的指令。

直接从源文件开始经过预编译、编译和汇编生成目标文件:gcc  -c hello.c –o hello.o

5.    链接

一个生成的可执行文件包含很多目标.o文件。包括地址和空间分配、符号决议(地址绑定)和重定位等步骤。就是把目标文件和库函数链接起来,最常见的库是runtime library即运行时库。

 

6.    编译器的工作

[1]      词法分析:扫描程序,产生一些记号:关键字、标示符、字面量和特殊符号

[2]      语法分析:将扫描器产生的记号生成以表达式为节点的语法树

[3]      语义分析:主要是静态语义,包括生命和类型的匹配,转换。经过语义分析,语法树的表达式被标识了类型,(有的要隐式转换)

7.        中间语言生成

源码级优化器,产生中间代码,代码生成器把中间代码转换成目标机器代码,目标代码优化器对目标代码优化、选择合适的寻址方式等

第三章  目标文件

8.         

[1]      代码段:代码、函数被放在数代码段.text或者.code

[2]      数据段:已初始化局部静态变量和全局变量被放在数据段.data

[3]      未初始化的全局和局部静态变量默认为0,放在.bss中,因为为0所以在.data中分配空间没有必要。

[4]      只读数据段:.rodata就是只读变量const和字符串常量。

[5]       

9.        目标文件包括一个文件头、描述了文件属性,如是否可执行、动态还是静态、入口地址、等,文件头包括一个段表,记录了各个段在文件中的偏移和短的属性。


### 回答1: 程序员应该具备以下自我修养: 1. 学习能力:不断学习新技术和开发方法,以适应不断变化的行业。 2. 代码规范:遵守代码规范,使代码易于阅读和维护。 3. 团队合作:能够与团队成员和客户进行有效的沟通,并协助他人完成任务。 4. 技术文档:能够编写清晰易懂的技术文档。 5. 代码评审:愿意接受他人对代码的评审,并从中吸取教训。 6. 安全意识:了解软件安全问题,确保代码安全。 7. 时间管理:能够有效利用时间,提高工作效率。 这些都是程序员自我修养的重要方面,帮助他们不断提高专业水平,在职业生涯中不断进步。 ### 回答2: 作为一名程序员自我修养对于提升技术水平、塑造良好职业形象和推动自身发展至关重要。以下是程序员需要具备的自我修养: 首先,程序员需要具备良好的学习能力和持续学习的习惯。技术更新迅速,程序员应不断学习新的编程语言、框架和工具,并关注业界最新动态。通过读书、参加培训、在线学习等方式充实自己,以适应不断变化的技术环境。 其次,程序员需要拥有良好的自我管理能力。合理安排工作和学习时间,增强自己的自律能力。具备高效的时间管理能力,可以更好地掌控项目进度,提高工作效率。 第三,程序员需要具备良好的沟通能力。与团队成员、领导和客户进行有效的沟通,清晰地表达自己的想法和理解对方的需求。在团队合作中,能够积极参与讨论,解决问题,协调资源,展现良好的团队协作能力。 第四,程序员需要具备较强的问题解决能力和自我反思能力。在工作中遇到问题时,能够迅速定位问题、分析原因,并提出解决方案。同时,程序员应该经常对自己的工作进行反思和总结,不断提高自己的工作效率和代码质量。 第五,程序员应该具备良好的职业道德和伦理意识。遵守公司规章制度,尊重知识产权,妥善保护客户的隐私和数据安全。在业务操作中,坚持诚实、客观、负责任的态度,秉持高尚职业道德。 总之,程序员自我修养不仅仅是技术层面的提升,还包括学习能力、自我管理能力、沟通能力、问题解决能力、职业道德等多方面的要求。只有不断提升自身素质,才能在竞争激烈的IT行业中立于不败之地。 ### 回答3: 作为一个程序员自我修养是非常重要的。首先,程序员需要具备严谨的思维能力和敏锐的观察力。他们需要能够准确地分析问题的本质,并能够找到最有效的解决方案。其次,程序员需要具备良好的学习能力和持续学习的意识。由于技术的不断发展和变化,程序员需要不断地学习新的编程语言、框架和工具,以保持自己的竞争力。另外,程序员还需要具备良好的沟通和团队合作能力。在开发项目中,他们需要与其他团队成员合作,共同完成任务。良好的沟通和团队合作能力有助于提高项目的质量,同时也有助于在团队中建立良好的人际关系。此外,程序员还应具备强烈的责任心和积极主动的态度。他们需要对自己的工作负责,并主动地解决问题和改进工作流程。最后,程序员还应具备良好的心理素质。由于编程工作常常会面临各种挑战和压力,程序员需要具备应对困难和压力的能力,保持积极向上的心态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值