当前位置: 首页 > news >正文

昆明专业建站查询个人信息最全的网站

昆明专业建站,查询个人信息最全的网站,上海网站空间服务器,网站标题改不了敲黑板:课程用的是 GNU 汇编器,macOS 和 Linux 已内置,本文的汇编语言的写法是 GNU 汇编器规定的写法。Windows 系统可安装 MinGW 或 Linux 虚拟机。 对于静态编译型语言,比如 C 语言和 Go 语言,编译器后端的任务就是生成汇编代码,然后再由汇编器生成机器码,生成的文件叫…

敲黑板:课程用的是 GNU 汇编器,macOS 和 Linux 已内置,本文的汇编语言的写法是 GNU 汇编器规定的写法。Windows 系统可安装 MinGW 或 Linux 虚拟机。

对于静态编译型语言,比如 C 语言和 Go 语言,编译器后端的任务就是生成汇编代码,然后再由汇编器生成机器码,生成的文件叫目标文件,最后再使用链接器就能生成可执行文件或库文件了。

就算像 JavaScript 这样的解释执行的语言,也要在运行时利用类似的机制生成机器码,以便调高执行的速度。Java 的字节码,在运行时通常也会通过 JIT 机制编译成机器码。而汇编语言是完成这些工作的基础。

对你来说,掌握汇编语言是十分有益的,因为哪怕掌握一小点儿汇编技能,就能应用到某项工作中,比如,在 C 语言里嵌入汇编,实现某个特殊功能;或者读懂某些底层类库或驱动程序的代码,因为它可能是用汇编写的。

本节先带你了解一下汇编语言,来个破冰之旅。然后在接下来的课程中再带你基于 AST 手工生成汇编代码,破除你对汇编代码的恐惧,了解编译期后端生成汇编代码的原理。

以后,当你看到高级语言的代码,以及 IR 时,就可以想象出来它对应的汇编代码是什么样子,实现从上层到底层认知的贯通。

了解汇编语言

机器语言都是 0101 的二进制的数据,不适合我们阅读。而汇编语言,简单来说,是可读性更好的机器语言,基本上每条指令都可以直接翻译成一条机器码。

跟你日常使用的高级语言相比,汇编语言的语法特别简单,但它要跟硬件(CPU 和内存)打交道,我们来体会一下。

计算机的处理器有很多不同的架构,比如 x86-64、ARM、Power 等,每种处理器的指令集都不相同,那也就意味着汇编语言不同。我们目前用的电脑,CPU 一般是 x86-64 架构,是 64 位机。(如不做特别说明,本课程都是以 x86-64 架构作为例子的)。

说了半天,汇编代码长什么样子呢?用 C 语言写的例子来生成一下汇编代码。

#include <stdio.h>
int main(int argc, char* argv[]){printf("Hello %s!\n", "Richard");return 0;
}

在 macOS 中输入下面的命令,其中的 -S 参数就是告诉编译器把源代码编译成汇编代码,而 -O2 参数告诉编译器进行 2 级优化,这样生成的汇编代码会短一些:

clang -S -O2 hello.c -o hello.s
或者:
gcc -S -O2 hello.c -o hello.s

生成的汇编代码是下面的样子:

 .section    __TEXT,__text,regular,pure_instructions.build_version macos, 10, 14    sdk_version 10, 14.globl  _main                   ## -- Begin function main.p2align    4, 0x90
_main:                                  ## @main.cfi_startproc
## %bb.0:pushq   %rbp.cfi_def_cfa_offset 16.cfi_offset %rbp, -16movq    %rsp, %rbp.cfi_def_cfa_register %rbpleaq    L_.str(%rip), %rdileaq    L_.str.1(%rip), %rsixorl    %eax, %eaxcallq   _printfxorl    %eax, %eaxpopq    %rbpretq.cfi_endproc## -- End function .section    _
http://www.yayakq.cn/news/956704/

相关文章:

  • 怎么建设一个自己微信网站用仿站工具做网站
  • 二级域名解析网站东莞同城招聘
  • 阳泉 网站建设合作网站推广软件免费下载
  • 如何做公司培训网站网站商城app建设方案
  • 我要浏览国外网站怎么做公司logo是什么意思
  • 搜狗网站录入可以下载的网站模板
  • 芜湖网站建设价格山西响应式网站平台
  • 百度网站是怎么做的怎样从用户体现提高网站的搜索引擎信任度
  • 一个阿里云怎么做两个网站吗石家庄做网站建设的公司排名
  • 网站开发人员职业分析win7 iis网站设置
  • 毕节建设厅网站数字营销推广平台
  • 阿里云可以做电影网站深圳建工集团股份有限公司待遇
  • 网站流量外流南阳做网站 汉狮公司
  • 网站管理员密码忘记了搭建好网站如何使用
  • 专业集团门户网站建设企业安徽制作网站专业公司
  • 网站制作的部分滨州淘宝网站建设
  • 网站模型怎么做部门网站建设和维护
  • 3800给做网站抖音开放平台官网入口
  • 哪里找做网站的客户网站建设必须要服务器吗
  • 怎么做淘宝客的网站怎样用别人的网站做修改病句
  • 网站备案要先怎么做呼和浩特建设厅网站
  • 泉州网站关键词推广中企动力邮箱登录首页
  • 苏州行业网站建设费用网站开发难题
  • 网站设计加油站二手交易网站开发技术路线
  • 网站备案产品信息错误温州网页制作招聘
  • 用 net做网站删除wordpress网页无用
  • 网站开发国内外研究动态域名可以免费注册吗
  • 品牌网站建设小8蝌蚪手机网站建设经验
  • 移动应用开发网站教育网页设计模板
  • 青岛建站价格软件外包网