汇编语言与汇编器

以下内容源于网络资源的学习与整理,如有其侵权请告知删除。

一、汇编语言概述

机器指令集(由众多机器码指令构成的集合)是由CPU的设计者制定的,CPU的内部电路设计就是为了实现这些指令集的功能。可以这样理解,机器指令集是一款CPU的硬件抽象,同时也是一款CPU的编程特征,就好像CPU的API接口。

因为机器码指令的可读性很差,于是设计者发明了助记符,这些助记符就形成了汇编语言。

不同的CPU会有不同的机器指令集,从而产生不同种类的汇编语言。也就是说汇编语言是一种基于具体CPU硬件的计算器语言,几乎没有移植性。但是使用汇编语言执行效率最高,因为可以充分发挥CPU的设计特点,因此在内核中要求效率极高的地方,需要用汇编代码进行处理。

二、汇编语言分类

由博文CPU架构的简介可知,目前主要的CPU架构有x86架构和ARM架构,因此常见的汇编语言分为两大类:X86汇编语言、ARM汇编语言。

X86汇编语言,根据处理器型号可以分为很多类,比如8086汇编(16位)、80X88汇编(也叫IBM PC汇编,16位)、80X86汇编(X大于3则指32位汇编)。X86汇编语言有两种语法风格,即Intel汇编和AT&T汇编。

ARM汇编语言也有两种语法风格,即ARM标准汇编和ARM GNU汇编,前者使用ARM官方提供的汇编器armasm,适合在windows中使用,一般用大写字母编写代码;后者使用GNU提供的汇编器as,适合在linux中使用,一般用小写字母编写代码。两者主要的区别在于伪操作不同,其他相关的指令基本上是一致的。

三、汇编器的种类

汇编器的作用,是把汇编语言转换成机器码。

常见的汇编器包括MASM、TASM、GAS等。高级的汇编器如MASM、TASM等,提供了很多类似于高级语言的特征,比如结构化、抽象等,在这些环境中编写的汇编程序,有很大的一部分是面向汇编器的伪指令。

(1)MASM。MASM是Microsoft Macro Assembler 的缩写,是微软公司为x86 微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32汇编,是Windows下开发汇编的利器。

(2)TASM。Borland公司开发的汇编器,被广泛用于Turbo C,Quick Basic等编译器,用作中间过渡编译。它也能独立的编译纯汇编或是Win32Asm的代码。具有编译快速,高效的特点,至今依然是汇编开发的首选利器。

(3)GAS。GAS是GNU Assembler的缩写。它是自由软件基金会的产品,可以支持不同的处理器,能够自动探测出实际的处理器架构,以生成相应的代码。另外也支持在某处理器平台上产生另一处理器平台的代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chmod常见用法

1 功能 改变文件的访问权限。主要是读、写、执行权限。 2 说明 2.1 权限种类 r  读 w  写 x  执行(或目录的访问权) X  只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性 s  同时设定用户或组ID t  粘滞位(删除或移动) 2.2…

网络套接字socket的简介

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 总结 socket的中文翻译是“套接字”,它是计算机之间进行通信的一种约定或一种方式。 套接字的典型应用就是web服务器和浏览器。 在Unix/Linux中,网络连接也是一…

VB6 无法加载ieframe.dll,导致不能使用 浏览器控件--(转载)

VB6编程中,如果使用了WebBrowser控件,保存关闭工程后再次打开时会出现错误提示:文件未找到: c:\windows\sytem32\ieframe.dll\1--继续加载工程吗?然后你就发现原先的WebBrowser控件变成一个PictureBox了,无法正常使用。…

IP、MAC和端口号

以下内容源于C语言中文网资料的学习与整理,非原创,如有侵权请告知删除。 在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口号。 IP地址 IP地址是 Internet Pr…

Java保留小数点一位的方法

float result (float) (Math.round (result * 10)) / 10;要是保留两位:10 --> 100, 以此类推.转载于:https://blog.51cto.com/5934497/1588690

UML概述

UML视频一直在看,但是总觉得没有什么思路,知识都是零散的、片面的。最后复习阶段老师重新理了一下思路,我才觉得有点清晰了。所以,又回头把UML概述部分总结了一下。 感慨一句:思维导图真的要勤画,画图也是在…

TCP/IP模型简介(OSI模型的简化版)

以下内容源于C语言中文网的学习与整理,如有侵权请告知删除。 一、TCP/IP模型 1、模型的概念 OSI 是 Open System Interconnection 的缩写,译为“开放式系统互联”。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络…

Atitit.web预览播放视频的总结

Atitit.web预览播放视频的总结 1. 浏览器类型的兼容性(chrome,ff,ie) 1 2. 操作系统的兼容性 1 3. 视频格式的内部视频格式跟播放器插件的兼容性.. 2 4. 指定播放器 embed 模式 2 1. 浏览器类型的兼容性(chrome,ff,ie) <% if( mediaUrl.endsWith(".avi") || …

Android去掉listView,gridView等系统自带阴影

当我们使用listView的时候&#xff0c;拉到顶&#xff0c;或是拉到底部的时候&#xff0c;我们会发现有系统自带的阴影效果出现&#xff0c;不同手机出现的颜色可能还会不一样。 在以前我始终都有注意到此问题&#xff0c;一直以为是系统自带的&#xff0c;不能去掉。也没有想过…

图解TCP数据的传输(建立连接、数据传输、断开连接)

以下内容源于C语言中文网的学习与整理&#xff0c;非原创&#xff0c;仅作学习之用&#xff0c;如有侵权请告知删除。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;数据在传…

自定义Button,复写里面的onKeyDown,不起作用

李刚的Android疯狂讲义真是“疯狂”&#xff0c;浪费了3天时间&#xff0c;到底是他的代码有问题&#xff0c;还是怎么的不得而知。 问题描述&#xff1a;他的书里面第3.3基于回调事件处理Propagation的例程。是为了演示基于回调事件传播的例程序&#xff0c;源代码如下&#x…

JavaScript跨域总结与解决办法

什么是跨域1、document.domainiframe的设置2、动态创建script3、利用iframe和location.hash4、window.name实现的跨域数据传输5、使用HTML5 postMessage6、利用flash本文来自网络&#xff08;http://f2e.me/200904/cross-scripting/&#xff0c;该网址已不能访问&#xff09;&a…

与socket网络编程有关的函数

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 基于TCP通信的服务模式 服务端 socket函数&#xff0c;获取网络连接的文件描述符 bind函数&#xff0c;将服务器的端口、ip地址与socket函数创建的文件描述符绑定 listen函数&#xff0c;监听服务器的当前端…

1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1010 Solved: 606 [Submit][Status] Description 为了避免餐厅过分拥挤&#xff0c;FJ要求奶牛们分3批就餐。每天晚饭前&#xff0c;奶牛们都会在餐厅前排队入内&#xff0c…

转载Linq中GroupBy方法的使用总结

Group在SQL经常使用&#xff0c;通常是对一个字段或者多个字段分组&#xff0c;求其总和&#xff0c;均值等。 Linq中的Groupby方法也有这种功能。具体实现看代码&#xff1a; 假设有如下的一个数据集&#xff1a; public class StudentScore { public int ID { se…

例程:Linux下的socket演示程序1

server.cpp 是服务器端代码&#xff0c;client.cpp 是客户端代码。 要实现的功能是&#xff1a;客户端从服务器读取一个字符串并打印出来。 服务器端代码 server.cpp&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include &…

在Atom中运行脚本

2019独角兽企业重金招聘Python工程师标准>>> 现在可以在atom官网&#xff08;https://atom.io/&#xff09;找到deb包。 插件script可以让atom运行脚本&#xff0c;具体请见&#xff1a;https://atom.io/packages/script。 下面大致讲一下如何使用。 安装atom后&…

例程:socket编程实现文件传输功能

程序要实现的功能&#xff1a;client 从 server 下载一个文件并保存到本地。 编写这个程序需要注意两个问题&#xff1a; &#xff08;1&#xff09;文件大小不确定 有可能比缓冲区大很多&#xff0c;调用一次 write()/send() 函数不能完成文件内容的发送。接收数据时也会遇…

js中的this

在面向对象编程语言中&#xff0c;对于this关键字我们是非常熟悉的。比如C、C#和Java等都提供了这个关键字&#xff0c;虽然在开始学习的时候觉得比较难&#xff0c;但只要理解了&#xff0c;用起来是非常方便和意义确定的。JavaScript也提供了这个this关键字&#xff0c;不过用…

在 Windows Azure 上部署并定制化 FreeBSD 虚拟机镜像

&#xfeff;&#xfeff;发布于 2014-12-11作者 陈阳FreeBSD 基础镜像现已登陆中国的 VM Depot&#xff01; 对于青睐 BSD 而非 Linux 的开源爱好者来说&#xff0c;这无疑是个好消息。同时&#xff0c;随着该基础镜像的可用&#xff0c;我们期待很快看到更多来自社区的基于 F…