当前位置: 首页 > 编程笔记 >

Assembly介绍

武友樵
2023-03-14
本文向大家介绍Assembly介绍,包括了Assembly介绍的使用技巧和注意事项,需要的朋友参考一下

示例

汇编语言是机器语言或机器代码的一种人类可读形式,它是处理器逻辑在其上操作的位和字节的实际序列。通常,与二进制,八进制或十六进制相比,人类用助记符进行阅读和编程更为容易,因此人类通常以汇编语言编写代码,然后使用一个或多个程序将其转换为处理器可以理解的机器语言格式。

例:

mov eax, 4
cmp eax, 5
je point

汇编程序是一种程序,可读取汇编语言程序,对其进行解析并生成相应的机器语言。重要的是要了解,不同于像C ++这样的语言是标准文档中定义的单一语言,它有许多不同的汇编语言。每种处理器体系结构,ARM,MIPS,x86等都有不同的机器代码,因此有不同的汇编语言。此外,对于同一处理器体系结构,有时会有多种不同的汇编语言。特别地,x86处理器家族具有两种流行的格式,通常被称为gas语法(gas是GNU汇编器可执行文件的名称)和Intel语法。(以x86处理器家族的创建者命名)。它们不同,但等效,因为通常可以使用任何一种语法编写任何给定的程序。

通常,处理器的发明者记录处理器及其机器代码并创建汇编语言。唯一使用一种特定的汇编语言是很常见的,但是与试图遵循某种语言标准的编译器作者不同,处理器的发明者定义的汇编语言通常但并非总是编写汇编器的人所使用的版本。 。

处理器有两种常规类型:

  • CISC(复杂指令集计算机):具有许多不同且通常是复杂的机器语言指令

  • RISC(精简指令集计算机):相比之下,指令更少且更简单

对于汇编语言程序员而言,不同之处在于,CISC处理器可能有很多要学习的指令,但通常有适合于特定任务的指令,而RISC处理器中的指令则更少且更简单,但是任何给定的操作都可能需要汇编语言程序员写更多的指令来完成同样的事情。

其他编程语言的编译器有时会首先生成汇编器,然后通过调用汇编器将其编译为机器代码。例如,gcc在编译的最后阶段使用其自己的气体汇编器。产生的机器代码通常存储在目标文件中,该文件可以由链接器程序链接为可执行文件。

完整的“工具链”通常由编译器,汇编器和链接器组成。然后可以直接使用该汇编器和链接器以汇编语言编写程序。在GNU世界中,binutils软件包包含汇编程序和链接程序以及相关工具。那些只对汇编语言编程感兴趣的人不需要  gcc或其他编译器软件包。

小型微控制器通常仅以汇编语言或以汇编语言和一种或多种高级语言(例如C或C ++)的组合进行编程。这样做是因为人们通常可以将指令集体系结构的特定方面用于此类设备,以编写比更高级语言可能更紧凑,高效的代码,并且此类设备通常具有有限的内存和寄存器。嵌入式系统中使用了许多微处理器是除通用计算机之外的其他设备,这些设备恰好内部装有微处理器。这种嵌入式系统的示例是电视,微波炉和现代汽车的引擎控制单元。许多这样的设备没有键盘或屏幕,因此程序员通常在通用计算机上编写程序,运行交叉汇编程序(之所以这样称呼,是因为这种汇编程序会为运行于其上的处理器产生不同类型的处理器产生代码)和/或交叉编译器交叉链接器以生成机器代码。

有许多此类工具的供应商,其供应商与其为其生成代码的处理器一样。许多(但不是全部)处理器也具有像GNU,sdcc,llvm或其他这样的开源解决方案。

 类似资料:
  • 本文向大家介绍Intel x86 Assembly& Microarchitecture 介绍,包括了Intel x86 Assembly& Microarchitecture 介绍的使用技巧和注意事项,需要的朋友参考一下 示例 历史 第一台电脑 早期的计算机有一块内存,供程序员将代码和数据放入其中,并在此环境中执行CPU。鉴于当时的计算机非常昂贵,很不幸的是它将完成一项工作,停止并等待将下一项工

  • Solidity定义了一个汇编语言,可以不同Solidity一起使用。这个汇编语言还可以嵌入到Solidity源码中,以内联汇编的方式使用。下面我们将从内联汇编如何使用着手,介绍其与独立使用的汇编语言的不同,最后再介绍这门汇编语言。 文档尚待完善的补充的地方:待补充内联汇编的变量作用域的不同,尤其是使用含internal的函数的库时所引入的复杂度。另外,还需补充,编译器定义的符号(symbols)

  • .NET Assembly 能显示 .NET 程序集的详细信息: 1) 编译模式调试/发布 2) .NET Assembly 全称 3) .NET Assembly 递归引用

  • 解决Spring Boot项目打包成jar包后,不方便修改配置文件,减少默认的第三方依赖等问题 该项目演示了使用maven-assembly-plugin等插件打包后,分离配置文件和第三方依赖jar包 spring-boot-assembly项目打包后,就像操作tomcat一样,可使用脚本启动停止服务,在logs文件夹中会记录启动和运行日志 spring-boot-assembly 在spring

  • Command Block Assembly Command Block Assembly started off as a tool that compiled assembly instructionsinto Minecraft commands. It has now grown into a much larger suite of tools for compiling source

  • Official website Much Assembly Required allows you to program the 8086-like microprocessor of a robot in a grid-based multiplayer world. The game is web based so no installation is required. In its cu