《汇编程序设计与计算机体系结构:软件工程师教程》 —3 汇编语言及其语法的基础知识

举报
华章计算机 发表于 2019/12/04 11:55:56 2019/12/04
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第3章,第3.1节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

第 3 章

Assembly Programming and Computer Architecture for Software Engineers

汇编语言及其语法的基础知识

目标

了解各种汇编语法之间的区别

了解汇编代码的各个段落并知晓其用途

用正确的语法来定义数据

创建能够运行的汇编程序

网络资源

https://sourceware.org/binutils/docs/as/(GAS 参考资料)

https://msdn.microsoft.com/en-us/library/afzk3475.aspx(MASM 参考资料)

http://www.nasm.us/doc/nasmdoc0.html(NASM 参考资料)

3.1 简介

这一章讲解 x86 及 x86_64 汇编语言。由于软件工程师通常会根据所要解决的问题来换用不同的操作系统,因此,本章与后续各章会同时采用三种较为流行的汇编器来进行讲解,也就是 GAS、MASM 与 NASM。这样写出来的范例能够运行在 Mac、Windows 与 Linux 这三种常见的操作系统上,使你可以通过与这些系统分别对应的三种开发环境(也就是 Apple Xcode、Microsoft Visual Studio,以及 Linux 系统的命令行界面)来学习汇编语言。

笔者会仔细地标出各种汇编器在语法上的区别。如果同一个意思必须按照三种不同的方式撰写才能分别适用于这三种汇编器,那么笔者就会以表格的形式对比这三种写法,并在表头标明各种写法所针对的汇编器。有的时候,笔者所举的范例代码只是为了解释某个概念,而不是打算讨论三种汇编器在语法上的区别,这些范例代码不会以表格的形式印出,而且也不会说明它针对的是哪一种汇编器。表 3-1 列出了各种汇编器所采用的汇编语法。

表 3-1 各种汇编器所遵循的语法规则

image.png

 

      提示:Xcode 并没有使用标准的 GNU Assembler(GAS),而是以 Clang 为前端,以 LLVM 为后端,自己整合了一种汇编器。这种 Clang/LLVM 汇编器与标准的 GAS 之间稍有区别,不过,由于 Clang 的目标是成为 GNU toolchain(GNU 工具链)的替代品,因此,在 Xcode 中写的汇编代码同样可以用当前版本的 GAS 来编译(笔者撰写本书时,GAS 的版本是 2.27)。请不要使用 macOS 自带的 GAS 版本(笔者撰写本书时,

 

      版本是 1.38)。这本书里的代码都已经用 macOS 系统中的 Xcode 测试过了,而且也能够在 Linux 系统中用 2.x 版本的 GAS 来编译,也就是说,它同时兼容 macOS 及 Linux 系统。为了保持一致,笔者把这两种情况下所用的汇编器统称为 GAS。

 

读完这一章,你就能熟悉 x86 与 x86_64 汇编的基本结构及语法了。第 4 章及后续各章都要求你必须先很好地理解这一章所讲的基础汇编语法。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。