读笔 汇编语言-基于Linux环境(第5章-汇编的权利:汇编语言的创建过程)

文章也同时在个人博客 http://kimihe.com/更新

引言

本章介绍汇编语言程序的创建过程,我们要准备踏上创作汇编程序之路啦~
仍旧如之前所说的,越了解底层,就越能够驾驭计算机。

摘要

  • 所有的汇编过程都是处理文件的过程。
  • 程序就是一个由非常小的步骤组成的漫长旅途,这些步骤是一个代表机器指令的二进制值的列表。

二进制文件 vs. 文本文件

  • 机器上文件可以分为:文本文件(text file)和二进制文件(binary file)。
  • 二进制文件可以使用Linux命令:> xxd file来查看,你需要直到打印出来的内容各字段的含义。如下输出:
$ xxd aa
00000000:   610a 620a 630a 640a 650a 660a 670a 680a   a.b.c.d.e.f.g.h.
00000010:   300a 310a 320a 330a 340a 350a 360a 370a   0.1.2.3.4.5.6.7.
00000020:   380a 390a

可以看到输出有三列,最左侧的00000000等数字代表偏移量,它包含显示那一行的第一个字节与文件开头的第一个字节的偏移量。中间的以字节为单位显示16进制内容。最右侧显示可视化文本字符,对于不可显字符的二进制值采用句号字符表示。

  • 注意到其中夹杂的0AH,这里它代表换行,对应键盘的enter(return)。值得一提的是在windows中,这个按键会产生回车(0DH)+换行(0AH),而Linux中只有换行(0AH)。现在大多数计算机系统和软件忽略回车,这是当年机械打字机的历史遗留:当打字机一行打满后,你必须把游标移到行首(回车0DH),并切到下一行(换行0AH),这样才能开始新一行的输入。
  • 在一个二进制可执行文件中,位模式可能意味着完全不同的内容,这取决于它刚好位于文件中的位置,以及该文件中,它附近存在这哪些其他位模式。

字节序

  • 对于字节顺序的解释可以分为小端法(little endian)大端法(big endian)。一旦使用不止一个字节来代表一个数字值,字节的顺序就变得至关重要。
  • 将多字节值的最低有效字节存储到最低偏移位置的计算机体系结构称为小端系统(little endian)。反之,将多字节值的最高有效字节存储到最低偏移位置的计算机体系结构称为大端系统(big endian)。
  • 在大端系统中的数据以16进制显示很容易,因为它们按照人们期待的顺序出现,最重要(高位)的数在左边。而在小端系统中,一切都是颠倒的。
  • 字节排列顺序的差异不仅适用于存储在文件中的字节,而且也适用于存储在内存中的字节。而最近的硬件体系结构都被设计为双向字节

编译器

  • 汇编语言具有非常重要的特征,正是这一点,使它在众多的编译器中与众不同,即:完全控制目标代码
  • CPU有很多机器指令,其中每一条都有一个对应的汇编语言助记符。
  • 助记符和它的操作数整合在一起称为指令(instruction)

目标代码和连接器

  • 现代汇编编译器产生的目标代码文件是一种源代码和可执行文件之间的中间步骤,这个中间步骤是一种叫作目标模块(object module)的二进制文件。
  • 目标代码文件本身并不能作为程序运行,还需要一个额外的必要步骤,那就是连接(link)
  • 目标代码文件作为中间步骤的原因是:大的源代码文件可以划分成许多更小的源代码文件,以保持文件大小和复杂性 的可管理性。
  • 连接器不只是把目标代码块组合成一个单个的块,它确保模块以外的函数调用能够到达目标对象模块,并且确保所有此类内存引用实际上指向它们期望引用的地方。

重定位能力

  • 与现代8086一同引入的Intel体系结构内部有了很大的改进,从而使程序无须被编译为在特定的物理地址运行。可知行文件内部的所有引用都通过相对于该程序起始位置的偏移量来指定。
  • 偏移量总是相同的,并且因为所有的引用都是相对于可知行程序文件的起始位置,所以在运行时,程序放在物理内存中的什么地方都没有关系。
  • 上述特性叫作可重定位能力

感想

似乎是时候可以去亲手挑选硬件,并组装一台机器了说。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,326评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,228评论 1 304
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,979评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,489评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,894评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,900评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,075评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,803评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,565评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,778评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,255评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,582评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,254评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,151评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,952评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,035评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,839评论 2 277

推荐阅读更多精彩内容