全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)
看了一下,当前看的这个章节还剩下几页没有看完。看完之后,做一个简单的整理。
在上一篇笔记中我提到了关于DJGPP的疑惑,也自己找到了网络信息来对此进行了解释。其实,如果继续往后看这部分就可以找到答案。
关于这一页中画出来的两部分,其中一个是说在linux环境下需要改代码,其实这个是不需要的。而且,这个修改的自由度其实很大,上一份笔记整理的时候也在最后测试过。而这里关于编译的说明其实是不完善的,上一份笔记中也做了说明。更加完善的信息其实在代码的注释说明当中。
这里首先介绍了一下链接的操作,这部分之前已经比较熟悉了,也一直用,直接跳过。
汇编器可以生成一个list文件,里面有机器码以及偏移量等信息。这个算是一个可读的中间品,里面的偏移量不是最终的程序中的偏移量,还需要连接器进行重新计算。
这一页有两个地方需要注意一下。第一个,寻址所用到的偏移量有些在汇编生成过程中计算不出来,这种信息可能会临时填充为0。
第二个就是大小端的表示,这个是跟CPU直接相关的。
1. 如果关注大小端,其实主需要关注单个的数据对象。假如是数组,在软件编写操作的时候其实是不需要考虑数组的方向等处理的。在高级语言表达中,这个都是相似的。数组中的每一个元素则可能有大小端的问题需要考虑,比如一个元素是32bit的,而我们软件中希望按照字节进行拆分,这时候需要考虑到大小端的处理。
2. 这一页中给出了一个汇编代码的编写模板,其实这个模板为什么是这样子是我之前的一点疑问。不过,既然这个是模板,直接作为常识知识暂时如此了解也是可以的。看起来,之前决定直接把这个疑惑跳过还是很明智的选择。
这样,这个章节暂时到此就结束了。学习有时候也是很依赖于经验的,这次看这些资料就有这样的感觉。如果时光倒流,我在大学的时候读这一份资料,或许我会痛苦得多。