
其他
weiqi7777
这个作者很懒,什么都没留下…
展开
-
如何将adoc文件转换为pdf文件
riscv的大多spec,都托管在了github。并且使用adoc文件格式编写。adoc文件,是可以转换为pdf文件的。通过工具 asciidoctor PDF 工具,可以将adoc文件,转换为pdf文件。该工具的官网介绍如下:https://asciidoctor.org/docs/asciidoctor-pdf/首先要先安装该工具,该工具,需要使用gem命令安装,如果环境中,没...原创 2020-05-06 20:13:53 · 4219 阅读 · 2 评论 -
静态程序编译链接与装载(一)问题的引入以及工具介绍
关于程序的编译链接与装载,有一些问题一直没有弄得很清楚。这次花了不少精力,把这些问题,好好研究了一番。在学习的过程中,熟读了<<程序员的自我修养-链接、装载与库>>这本书,收获良多。强烈推荐这本书。此次系列文章,是针对静态编译,动态编译太多复杂,目前仍有很多问题,没有解决。在开始之前,带有如下的一些问题:程序是如何编译成可执行程序?跨模块之间,...转载 2019-02-16 22:07:28 · 597 阅读 · 0 评论 -
静态程序编译链接与装载(二)编译链接以及ELF中section详细分析
在编译之后,也就是make compile,将a.c文件,转换成a.s。a.c和a.s如下图所示: 程序被切分成了如下的一些段:1个代码段, .text函数main2个数据段,.data全局变量global_init_a静态局部变量static_a2个COM段,.comm变量global_noinit_b变量stat...转载 2019-02-16 22:14:17 · 1107 阅读 · 0 评论 -
静态程序编译链接与装载(三)segment分析以及链接视图与执行视图
程序通过编译,链接生成ELF可执行之后,如果要被执行,是需要装载到内存当中,然后去执行的。那么装载的过程,应该是如何装载的?是按照链接时候的section为单位进行装载吗?下面,就要基于这个问题,进行分析。链接的时候,是通过section进行组合,得到最终的ELF,但是对section进行分类的话,section无非就下面几种权限:RX:可读可执行,对应于代码段RW:...转载 2019-02-16 22:15:50 · 892 阅读 · 0 评论 -
静态程序编译链接与装载(四)ELF程序如何执行
ELF有执行视图,那么ELF是怎么执行的起来的呢?这里,分为2个进行说明:一、CPU在EDA上,仿真执行ELF在验证环境中,会有一块memory,专门用来放置CPU要执行的指令,以及访问的数据。而verilog提供了$memreadh系统函数,可以将hex文件,直接载入到memory中。因此只要将ELF文件,转化成hex文件即可。比如对于如下的链接脚本: 3个代...转载 2019-02-16 22:17:11 · 1792 阅读 · 0 评论 -
静态程序编译链接与加载(五)链接脚本大作战
在程序编译的过程中,链接脚本起了非常大的作用,对各个.o文件,如何组合,VMA与LMA如何定义,都由这个文件来决定。下面,针对链接脚本,进行一系列的实验。一、最简单链接脚本,代码段和数据段,合成一个segment链接脚本如下图所示: 数据段,紧跟代码段代码段和数据,最终合成一个segment全部的section,都合并到一个segment中了。segment的属...转载 2019-02-16 22:18:14 · 458 阅读 · 0 评论