十年程序员
文章平均质量分 73
jinggege_7758521
这个作者很懒,什么都没留下…
展开
-
第三章 编译基础知识之重定位
要解释重定位,首先需要理解程序是怎么链接的。程序链接的时候可以通过链接脚本将程序链接到指定地址上,可以链接成地址相关码也可以链接成地址无关码。顾名思义,地址相关码就是把程序链接到指定地址上,在嵌入式开发中经常用到地址相关码的编译。由于嵌入式的板子资源有限,需要规划内存的使用,就需要合理规划bios、操作系统、嵌入式软件的地址。地址无关码就是程序可以被加载到任意地址上,但是程序的指令编译之后就是固定的,在函数调用、全局变量的使用的时候如何正确定位到指定地址上呢?举一个例...原创 2021-11-24 10:13:56 · 462 阅读 · 0 评论 -
第三章 编译器基础知识之ELF文件格式简介
因为接下来要介绍llvm相关知识,作为一个通用编译器,除了要了解编译原理、汇编等专业知识之外,还需要了解像PE文件结构,ELF文件结构等。上述知识我会在后续的章节之中简单介绍,同时在文章最后给大家分享一些相关书籍。本章我主要介绍ELF文件格式的相关知识,不过本文不是要将所有知识全部讲清楚,更多的一些学习方法和心得,以帮助那些对编译、操作系统等知识感兴趣的同学学习。一 什么是ELF文件ELF文件是一种二进制文件,类似于windows下的exe文件,是unix系统家族中的可执行文件,符合ELF文件结原创 2021-11-23 21:04:30 · 2737 阅读 · 0 评论 -
第二章 编译器之llvm编译
在最近的工作中要使用llvm编译器,研究了小半年的时间,这里我就大概介绍一下llvm的基本情况,如何使用。 llvm是一个开源的编译器,众所周知,苹果的xcode的内核就是llvm编译器。llvm是一个轻量的易于扩展的编译器,通过IR等中间语言将编译分为前端和后端,所以llvm也存在易于扩展的属性。如果你需要定义一个新的语言,只需要开发llvm的前端,如果需要支持新的指令集,只需要开发llvm的后端。 本章先介绍llvm的环境搭建和基本信息获取方式,算是抛...原创 2021-11-22 20:45:11 · 1499 阅读 · 0 评论 -
第一章:你的编程入门了吗?养成良好的编程思维
我今天看到一个问答:你什么时候觉得自己编程入门了?我是一个有十年编程经验的程序员,使用过C++,c语言,python,php,Scala等开发语言,做过小程序,使用汉语编程语言中的神器易语言写过工具。但这一行做的时间越长,越觉得编程是一门哲学:有时候觉得自己早就入门了,有时候觉得不知道编程的门在哪里。可能很多人会说,编程不就是写代码吗?刚毕业的时候我也是这样想的,能实现一个又一个的特性,将一个个设计转化成代码的过程就是编程。但实际上编程的世界如星辰大海,做得越久,越对这个行业有敬畏之心。分享一个原创 2021-10-31 11:16:33 · 117 阅读 · 0 评论