- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
MacOS汇编语言基础 1
macOS上的汇编入门(一)——引言 2
macOS上的汇编入门(二)——数学基础 3
macOS上的汇编入门(三)——硬件基础 5
macOS上的汇编入门(四)——操作系统基础 8
macOS上的汇编入门(五)——第一个汇编程序
macOS上的汇编入门(六)——汇编语言初识
macOS上的汇编入门(七)——字面量与局部变量
macOS上的汇编入门(八)——寻址方式与全局变量
macOS上的汇编入门(九)——跳转与函数
macOS上的汇编入门(十)——再探函数 42
macOS上的汇编入门(十一)——系统调用 47
macOS上的汇编入门(十二)——调试
macOS上的汇编入门(十三)——从编译到执行
macOS上的汇编入门(一)——引言
macOS上的汇编入门(一)——引言
我最近一个阶段都在学习汇编语言,但是,当我想使用我的Mac编写汇编语言的时候,发现了许多
问题。比如说,大多数实体的教材都采用的是32位甚至是16位的处理器,在如今仅支持64位架构
的macOS 10.15上根本不能原生运行;再者,基于XNU这种类Unix内核的macOS系统,汇编语言的部
分细节,如系统调用号等等与Linux不同,调用约定也与Windows不同。但现在网络上基于macOS来
入门汇编语言的文章非常少,涉及到macOS汇编的也基本上不是用来入门的文章。因此,我打算利
用这个暑假来写一写如何在macOS上入门汇编语言。
需要的背景知识
阅读我写的这一系列文章需要的背景知识并不多,包括:
能看懂C语言
一点点的计组知识
一点点的命令行知识(至少应当会在终端下进入指定的目录)
这系列文章究竟讲了什么
那么,我打算讲的是在macOS上利用GAS语法,也就是ATT语法进行x86-64汇编的入门。
第 1 页 /共 58 页
macOS上的汇编入门(二)——数学基础
macOS上的汇编入门(二)——数学基础
在正式介绍汇编语言之前,我会先用几篇文章讲一些数学基础和硬件基础。如果读者已经具备了
一定的知识基础,可以直接跳过这些文章去汇编语言部分。
二进制,八进制与十六进制
在计算机底层的软件层面,我们通常采用二进制,八进制或十六进制来记录数字,其中最常用的
是十六进制。所谓n n 进制,就是从0开始数,逢n n 进1. 比如说二进制,就是从0开始数,到
1,然后到2的时候进1变成10. 八进制也是类似,但是到了十六进制就犯了难,我们的数字只有0
到9这十个,并不能表示出16个呀,于是,我们默认使用了a到f这六个字母来分别表示10到15这六
个数。也就是说,十进制数10对应的十六进制数是a, 十进制数26对应的十六进制数是1a. 在计算
机底层,通常用 0x 开头表示十六进制,用 0 开头表示八进制,而没有前缀来表示十进制。因
此,比如说以下的汇编代码(并不需要理解实际含义)
movq $0x1a, %rax
与
movq $26, %rax
相同。
十进制数与十六进制数的转化可以在搜索引擎上找到,这里不再赘述。而八进制,十六进制数与
二进制数的转换则十分简单。一个八进制数的一位代表一个二进制数的三位,比如说八进制数的
一位 5 就代表二进制数的三位 011 ; 同理,一个十六进制数的一位就代表二进制数的四位。因
此,十六进制数 0x2000001 就代表二进制数 001000000000000000000000000
原创力文档


文档评论(0)