【更新中】苹果自家的as汇编器的特色风格(与wasm的不同)

news2024/11/28 14:53:44

as汇编器是苹果的汇编器,Xcode 生成的代码也是as风格的,而as风格与大部分人在大学里所学的微软的masm风格大相径庭,所以本文会列出二者的不同。不过由于细节太多,没法一次性写出所有的不同,所以会持续更新。

你可能会找到一本手册名为《Mac OS X Assembler Guide》,但是这本手册出自 2005 年,是为了过度到 Intel 所写的。但是现在很多事情已经变了,现在的as手册最近更新日期为 2020 年 4 月 23 日,也就是 M1 登场的日子。

现在的as手册最近更新日期为2020年4月23日

寄存器表达方式

masm中,寄存器直接写,比如:

mov eax, ebx

但是在as中,为了不与标识符(identifier,其实就是常说的变量)搞混,需要在寄存器前面加上百分号%,并且必须小写。如下:

movq    %rsp, %rbp

指令参数(最重要的区别)

这是最重要的一个区别!在masm中,表示a=a+b汇编指令如下:

add a, b

会将后者加到前者上。

但是在as中,表示a=a+b汇编指令是下面的结构:

add b, a

是直接按照顺序执行下去的。

指令中的数值

masm中,如果想将一个指令参数设置为数值,比如说10,那么可以写成以下样式

mov a, 10

但是在as中,要加上$,如下:

mov $10, a

不过虽然麻烦,但是可以在后面加上括号来进行一些简单的计算,如下:

mov $(2*5), a

地址偏移量

masm中,如果想表示一个地址偏移量(很多情况下就是表示一个变量的地址),那么写法如下

mov eax, [ebp+8]

但是在as中,写法为偏移量(基础寄存器, 下标寄存器, 缩放),看着很复杂,但是实际情况大多如下:

movl    %edi, -4(%rbp)

十六进制写法

masm中,十六进制被写成以H或h结尾的,例如5c0dH。但是在 as中,需要写成0x开头的,例如0x1234

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

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

相关文章

linux常用系统工作命令

前言: 最近又重新抓起linux开始学习起来了,以前干过一段时间的菜鸟运维,对linux操作系统有点浅显的认识,中间又因为工作关系渐渐的又接触不到了,最近的博文算是回忆也当作笔记用,重新开始学习linux系统。 …

MYSQL主从复制和读写分离.1

1、什么是读写分离? 读写分离,基本的原理是让主数据库处理事务性增、删、改操作(insert、update、delete),而从数据库处理select查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、为什…

Mysql日志管理与备份恢复

目录 一、Mysql日志管理1、日志的分类1.1 错误日志1.2 通用查询日志1.3 二进制日志1.4 慢查询日志1.5 配置日志文件 2、日志的查询 二、Mysql备份与分类1、数据备份的重要性2、造成数据丢失的原因3、数据库备份的分类3.1 从物理与逻辑的角度划分3.2 从数据库的备份策略角度划分…

【配电网重构】基于SOE算法的多时段随机配电网重构方法【IEEE33节点、IEEE84节点】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

go语言channel(管道)和 select的结合使用

给个小建议:如果是初学者,建议把基础知识朗读一遍,有个大概印象,后面思考多了,就会“由量变达到质变”,从而有所顿悟。 目录 一、基础知识二、例子11、管道ch的缓冲区为10,select中有case读取管…

基于stm32物联网开发板(2)--LCD屏幕

基于stm32物联网开发板(2)–LCD屏幕 LCD应用展示: LCD屏幕应用 1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW;超大可视角度:大于160(显示屏中可视角度最大的一种屏幕)&#xff1…

《深入理解Java虚拟机》JVM是怎么实现方法的动态调用的?方法句柄

《深入理解Java虚拟机》JVM是怎么实现方法的动态调用的?方法句柄 1.方法句柄出现的原因 某个国家举办了跑步比赛,有亚洲,欧洲还是非洲人参赛,但是有机器人也参赛了。机器人不属于人类阵营,怎么能让机器人也参加进来呢&#xff1…

Java递归生成树

1.建菜单表 CREATE TABLE t_menu ( id int(11) NOT NULL AUTO_INCREMENT, pid int(11) NOT NULL, name varchar(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8mb4; 2.造一些数据 注意:根节点的pid0&#xff0c…

利用Rsoft开展弯曲光纤仿真分析

Rsoft是一款优秀的光学仿真软件,里面集成了多个模块,其中BPM模块利用光束传播法(Beam Propagation Method),能够进行多种类型光器件的仿真,比如分束器、光纤等。这次,利用该模块展示如何开展光纤…

SpringSecurity简单的练手项目(SpringBoot+SpringSecurity+JWT)

文章目录 一、项目介绍二、SpringSecurity简介SpringSecurity中的几个重要组件:1.SecurityContextHolder(class)2.SecurityContext(Interface)3.Authentication(Interface)4.AuthenticationMana…

Eclipse的介绍与安装

Eclipse简介 Eclipse 是一个开放源代码的,基于 Java 的可扩展开发平台。Eclipse官方版是一个集成开发环境(IDE),可以通过安装不同的插件实现对其它计算机语言编辑开发,如C、Php、Python等等。 Eclipse的下载 下载时需要访问网址 http://…

Android系统原理性问题分析 - RefBase、sp、wp 分析

声明 在Android系统中经常会遇到一些系统原理性的问题,在此专栏中集中来讨论下。接触Android系统,遇到很多sp、wp相关问题,此篇分析Android系统内的智能指针问题。此篇参考一些博客和书籍,代码基于Android 9.0.0,不方…

3D点云的基本操作(基于PCL编程)

知识储备 右手系 右手,拇指,食指,中指,分别是x,y,z的正方向。左手系则同理。 旋转矩阵 本质:两个坐标系之间的旋转关系。 用途:旋转点云。 原理:设传感器的坐标系为O1X1Y1Z1,设…

mysql 分组语句测试

建表 建表语句: CREATE TABLE student( id int not null, name char(12), sex char(1) ); 预置数据 insert into student values(1, wh, 1); insert into student values(2, wh1, 0); insert into student values(3, zyx, 0); commit; 增加字段 alt…

设计模式的分类、意图和适用性

文章目录 引言分类创建型设计模式Factory Method(工厂方法)Abstract Factory(抽象工厂)Builder(生成器)Prototype(原型)Singleton(单例) 结构型设计模式Adapt…

【二】设计模式~~~创建型模式~~~工厂方法模式(Java)

【学习难度:★★☆☆☆,使用频率:★★★★★】 2.1. 模式动机 现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个…

【周末闲谈】超越ChatGPT?科大讯飞星火认知大模型

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 前言星火名字的由来科大讯飞星火落地应用演示赶超ChatGPT的底气在哪里?“硬…

洗地机哪个品牌好?好用的家用洗地机分享

洗地机采用高效吸力和清洗方式,可快速清除地面污渍和痕迹,让地面干净整洁,提高使用者的生活品质和舒适度。洗地机不仅清洁效果好,而且操作简单,大多采用一键启动和一键停止,方便快捷,节省时间和…

MySQL备份工具之xtrabackup

文章目录 MySQL备份工具之xtrabackup一、xtrabackup的介绍1、xtrabackup 版本兼容性2、Xtrabackup优点3、Xtrabackup备份原理 二、安装mysql5.7.x1、yum方式安装mysql5.7.x的方式2、下载 xtrabackup2.4 版本3、xtrabackup2.4备份mysql5.7.x数据3.1、innobackupex全备3.2、模拟数…

瑞吉外卖 - 完善后台系统登陆功能(5)

某马瑞吉外卖单体架构项目完整开发文档,基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成,有需要的胖友记得一键三连,关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料:https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…