SunnyOS准备

AT&T语法汇编和Intel语法汇编比较:

1.  前缀:

①在AT&T语法中,寄存器以‘%‘为前缀立即数则以‘$‘为前缀,而Intel语法中则没有;

②在Intel语法中,十六进制立即数以‘h‘结尾,二进制立即数则以‘b‘结尾。另外对于编译器来说,十六进制立即数不能以字符a~f打头,需要在前面上加上‘0‘。而AT&T语法中,十六进制使用 "  0x数据  "来表示

Intel Syntax AT&T Syntax
mov     eax, 1 movl    $1, %eax
mov     ebx, 0ffh movl    $0xff, %ebx
int        80h int        $0x80

2. 运算方向:

在运算方向上,Intel语法与AT&T语法正好相反。 在Intel语法中,第一个是目标操作数,第二个是源操作数,而在AT&T语法中,第一个是源操作数,第二个是目标操作数。

3.内存运算:

Intel语法格式是 segreg:[base + index * scale + disp]
AT&T语法格式则是%segreg:disp(base, index, scale)


AT&T语法


Intel语法


movl -4(%ebp), %eax


mov eax, [ebp - 4]


movl array(, %eax, 4), %eax


mov eax, [eax*4 + array]


movw array(%ebx, %eax, 4), %cx


mov cx, [ebx + 4*eax + array]


movb $4, %fs:(%eax)


mov fs:eax, 4

在Intel语法中,内存单元用方括号表达,而在AT&T语法中,它是由圆括号括起来的。

4. 后缀:

后缀表示的是操作数的大小:

AT&T语法中‘l‘代表long(32bit), ‘w‘代表word(16bit)和‘b‘代表byte(1字节);Intel语法使用byte ptr, word ptr, dword ptr

AT&T中指令:

movb  传送字节

movw  传送字

movl   传送双字

5. 跳转指令;

AT&T 格式:ljump $section, $offset

Intel 格式: jmp far section:offset

AT&T 格式:lcall $section, $offset

Intel 格式:call far section:offset

直接跳转:跳转目标是作为指令的一部分编码的(有可能是相对位移地址).

例如: jmp Label_1

间接跳转:跳转目标是从寄存器或存储器位置中读出的. 写法是在" * "后面跟一个操作数指示符.

例如: jmp *%eax 用寄存器%eax中的值作为跳转目标

  

    jmp *(%eax) 以%eax中的值作为读入的地址, 从存储器中读出跳转目标

  

				
时间: 2024-08-03 15:35:11

SunnyOS准备的相关文章

SunnyOS准备4

8086 CPU一般是这样:CS寄存器初始化为0xF000,IP寄存器初始化为0xFFF0,所以按照CPU实模式地址计算法则,CPU执行的第一条指令地址是CS*10h+IP,即0xFFFF0处 对于80386以上的CPU: 第一点,80386及其以上的现代CPU(以下简称CPU)加电Reset之后并不是直接进入实模式: 第二点,CPU在合成地址的时候不区分实模式和保护模式. CPU进入保护模式的方法是CR0寄存器的PE Bit置为1.而在CPU刚加电的时候,CR0寄存器的PE位实际上没有置1,但

1. 公众号开发架构

1. 公众号开发需要与公众号后台有交互,需要在后台网页进行配置,比如通信的域名地址,js jdk的授权地址等等. 2. 使用Node.js为底层环境,使用ES6新特性. 3. 使用Koa框架,主要用来处理服务器之间的应用初始化.接口调用以及数据的响应. 4. 使用bluebird来处理和封装异步请求. 5. 网络请求使用request,它是对原生的http request的封装. 6. 微信的数据包装方式是XML,借助ejs模板库,把数据作为变量替换到XML字符中. 7. 常用工具模块, lod

ThinkPHP3.2对接开发支付宝即时到帐接口

ThinkPHP3.2对接开发支付宝即时到帐接口 在做一些商城.自动发卡网站.会员积分充值.金币充值等等这类网站都时候,我们极大可能需要使用到第三方都支付接口.不管是财付通.支付宝.银联.贝宝.易宝这些都 ThinkPHP3.2对接开发支付宝即时到帐接口        在做一些商城.自动发卡网站.会员积分充值.金币充值等等这类网站都时候,我们极大可能需要使用到第三方都支付接口.不管是财付通.支付宝.银联.贝 宝.易宝这些都好,总之这些第三方支付平台给我们带来了很多便利都地方.我们只需要跟这些平台

centos 6.4下安装与设置apache服务器

1.打开虚拟机开启centos 6.4系统后进入root用户下,打开终端,输入#yum -y install httpd,安装apache服务器. 输入命令后到安装完成前有几次需要暂停确认,输入y按enter键即可,直到安装显示complete. 2.为服务器设定本机IP地址.利用这个IP地址创建基于IP地址的虚拟主机 在/var/www/html目录下创建h1文件夹,在文件夹下创建index.html文件(文件内写可在屏幕输出的html代码,以作测试): 查看本机ip地址,然后把服务器的eth

阿里云搭建配置自己的ngrok服务

一直在使用sunny提供的免费的ngrok服务,由于昨天不知是不是服务器down的原因,一直连接不上,导致手中微信开发的工作无法很好的开展.遂有了再次尝试自己搭建一个ngrok服务(曾经有过几个小时的研究和尝试,没有成功).在N小时的尝试之后,最终修成正果,成功搭建属于自己的ngrok服务! (其实还有一些问题没有确认,但是暂时不深入研究了,有兴趣的可以深入) 准备工作: 一台外网服务器,一个域名. 我的环境: 阿里云Centos6.5,二级域名ngrok.***.cn泛解析. Go环境 1 #

ubuntu下使用ngrok外网映射

好久之前想搞明白这个事情,可是就是不知道这个词叫外网映射,所以也一直不知怎么做,在慕课网看用java开发微信公众号的时候教程里提到了外网映射,查了一些资料终于把本地给映射到外网了,直接变成了80端口,在这记录一下. 1.首先先下载ngrok:https://ngrok.com/download 2.打开http://www.ngrok.cc/下载sunny和之前下载的ngrok放在同一个文件夹中 3.写配置文件https://www.sunnyos.com/article-show-61.htm

免费内网映射外网绑定,tcp端口转发(windows)

在tcp socket开发过程中,想要外网客户端映射到本地启动的tcp服务端,总结本地tcp端口映射外网方法: 1.打开ngrok后注册用户,网址 ngrok:https://www.ngrok.cc/ 2.添加一个隧道,选择免费版即可.  具体的添加方法:https://www.sunnyos.com/article-show-70.html 3.启动ngrok隧道: ngrok  参考文献:https://www.sunnyos.com/article-show-67.html 下载插件,打

1.利用consul实现k8s服务自动发现

标题 : 1.利用consul实现k8s服务自动发现 目录 : 微服务架构设计 序号 : 1 ] } } ] } } ? - consul自身支持ACL,但目前,Helm图表不支持其中一些功能,需要额外的手动配置, 有关详细信息可参阅:https://www.consul.io/docs/platform/k8s/helm.html - 我们使用basic-auth作了授权,当用户访问consul-ui时需要提供用户名和密码 ?shell yum -y install httpd echo "$