x86 汇编的基础知识

x86 汇编器编程

基于x86 实现编译器首先得了解x86 平台的指令调度, 以下是一些我在实现编译器过程中用到的基础知识!

大部分内容参考了 青木的自制编译器,

基于GNU汇编器

c语言使用gcc 编译, 而gcc 编译器将c代码转化为汇编之后, 也是用的GNU as 的汇编器将汇编语言 .s 转化为.o,然后再连接, 因此如果自制编译器, 也是做到汇编这一步, 所以又得学x86 汇编器的使用方法!

gcc 用的 GNU, 那我就直接使用gcc!

基本使用

编译:

as hello.s //默认生成 a.out

也可以指定名字:

as -o hello.o hello.s

生成目标文件后还要连接才可以执行。

gcc hello.o -o hello

最后就是

./hello

语法

指令

指令包括 助记符操作数 组成,比如 movl %esp, %ebp , movl 助记符, 后面两个为操作数, 操作数可以为多个!逗号分隔。

这个是由cpu直接执行的指令

汇编伪操作

以点 “.” 开头的, 末尾没有冒号 “:” 的 都是汇编伪操作行。

由汇编器执行,记录元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值