ARMv8的两种执行状态: AArch64/AArch32

2023-10-29

Copied from ARM® Compiler User Guide
When compiling code, you must first decide which target the executable is to run on. An ARMv8-A target can run in different states:
• AArch64 state targets execute A64 instructions using 64-bit wide general-purpose registers.
• AArch32 state targets execute A32 or T32 instructions using 32-bit wide general-purpose registers.
The –target option determines which target state to compile for. This option is a mandatory option.
To create an executable for an AArch64 target in a single step:
armclang –target=aarch64-arm-none-eabi hello.c
This command creates an executable, a.out.
The –target option selects the target that you want to compile for. This example compiles for an AArch64 state target. Because only –target is specified, the compiler defaults to generating code that runs on any ARMv8-A target. You can also use -mcpu to target a specific processor.
To create an executable for an AArch32 target in a single step:
armclang –target=arm-arm-none-eabi -mcpu=cortex-a53 hello.c
In this example, there is no default target for AArch32 state, so you must specify either -march to target an architecture or -mcpu to target a processor. This example uses -mcpu to target the Cortex®-A53 processor. The compiler generates code that is optimized specifically for the Cortex-A53, but might not run on other processors.
Use -mcpu=list or -march=list to see all available options.

• The –target option is an armclang option. For all of the other tools, such as armasm and armlink,
use the –cpu and –fpu options to specify target processors and architectures.

ARMv8-A有两种执行状态: AArch64和AArch32(后者是为了兼容以前的32bit的程序)。
AArch64执行A64指令,使用64bit的通用寄存器;
AArch32执行A32/T32指令,使用32bit的通用寄存器;
arm compiler使用 –target=aarch64-arm-none-eabi 来产生 AArch64的可执行程序。默认使用ARMv8-A target,也可使用 -mcpu 指定特定的ARMv8处理器。
使用 –target=arm-arm-none-eabi 来产生 AArch32的可执行程序。对AArch32而言,没有默认target(处理器),所以需要使用 -march 或者 -mcpu 来指定处理器:
–target=arm-arm-none-eabi -mcpu=cortex-a53

可使用 -mcpu=list 或者 -march=list 查看可选的架构和处理器选项。

–target是armclang用的参数,别的工具,例如armasm/armlink,使用 –cpu 和 -fpu 参数来指定处理器和架构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARMv8的两种执行状态: AArch64/AArch32 的相关文章

  • 多核ARM cpu上的中断如何工作

    这个问题已经针对 x86 得到了解答 但是 我找不到太多关于 ARM MP cpu 如 Cortex A9 Cortex A15 等 的信息 更重要的是我想知道是否可以在非主CPU上引发中断而无需任何配置等 我正在开发一款仅处理主 cpu
  • 理解这部分手臂的汇编代码

    syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func
  • 将 ZeroMQ 交叉编译为 ARM,以便在 MonoTouch iPhone 应用程序配置设置中使用

    我正在尝试在使用 MonoTouch 用 C 开发的 iPhone 应用程序中使用 ZeroMQ 库 我几乎解决了所有的问题 却在最后一道坎倒下了 我正在使用 ZeroMQ 2 1 10 和 C CLR 绑定 包装器 并在 Mac OS X
  • 如何在 ARM 架构上从 RAM 运行代码

    我正在对 ARM Cortex R4 进行编程 并且有一些二进制文件 我想从 TCRAM 执行它们 只是为了看看性能的提升是否足够好 我知道我必须编写一个函数来将二进制文件复制到 RAM 这可以通过链接器脚本来完成 并且知道二进制文件的大小
  • ARM 的启动过程是怎样的?

    我们知道 对于X86架构 按下电源按钮后 机器开始执行0xFFFFFFF0处的代码 然后开始执行BIOS中的代码以进行硬件初始化 BIOS 执行后 它使用引导加载程序将操作系统映像加载到内存中 最后 操作系统代码开始运行 对于ARM架构 使
  • DSP 库 - RFFT - 奇怪的结果

    最近我一直在尝试在我的STM32F4 Discovery评估板上进行FFT计算 然后将其发送到PC 我已经调查了我的问题 我认为我对制造商提供的 FFT 函数做错了 我正在使用 CMSIS DSP 库 现在我一直在用代码生成样本 如果工作正
  • ARM Cortex A8 PMNC 读取在启用后也给出 0.. 有什么想法/建议吗?

    MODULE LICENSE GPL MODULE DESCRIPTION user mode access to performance registers int init arm init void unsigned int valu
  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • 如何在 Android 设备上运行 VS Code [重复]

    这个问题在这里已经有答案了 我有 Galaxy Tab S6 它具有替代笔记本电脑的很酷的功能 例如连接鼠标和键盘 但不幸的是它运行 Android 操作系统 并且没有很多开发应用程序可用于 Android 所以我想是否有一个选项可以在至少
  • 尝试使用 qemu-arm 运行arm二进制文件时如何解决“加载共享库时出错”?

    我正在运行 Linux Mint 14 并安装了 qemu qemu user 和 gnueabi 工具链 我编译了 test carm linux gnueabi gcc test c o test 当我尝试跑步时qemu arm usr
  • 了解 ctags 文件格式

    我使用 Exhuberant ctags 来索引我的 c 项目中的所有标签 c project 是 Cortex M7 微控制器的嵌入式软件 结果是一个标签文件 我正在尝试阅读该文件并理解所写的内容 根据我找到的 ctags 和 Exhub
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • 了解 U-Boot 内存占用

    我不明白加载 U Boot 时 RAM 中发生了什么 我正在开发 Xilinx Zynq ZC702 评估套件 并尝试使用 U Boot 在其上加载 Linux 内核 于是我使用Xilinx工具Vivado和SDK生成了一个BOOT bin
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE

随机推荐

  • RocketMQ(一)—— 基本使用

    目录 1 RocketMQ基本使用 1 启动 2 测试 3 关闭 2 集群简介 特点 集群模式 工作流程 3 双主双从集群搭建 关闭防火墙 环境变量配置 创建消息存储路径 broker配置文件 启动 集群监控平台搭建 4 消息发送 1 基本
  • centos7安装mysql8.0.17初始化错误

    2019 08 22T13 21 17 518044Z 0 System MY 013169 Server root soft app mysql bin mysqld mysqld 8 0 17 initializing of serve
  • 免费下载正版office(仅限笔记本用户)

    买笔记本的时候 一般都会赠送正版office 但是由于重装系统等等某些原因 office找不到 面对这种情况 不用去网上找免登录的下载方法 详情请看下面方法 一 登录微软官网 注 一定要登录你买电脑时注册微软的账户 一般是qq邮箱 网址如下
  • 如何在前端完美控制浏览器兼容性问题

    分享一些好玩的代码 看看哈 function t n e var a 0 r isVisible function t var n t getBoundingClientRect e n width n right 0 n left 0 a
  • OpenGL 4.0的Tessellation Shader(细分曲面着色器)

    OpenGL 4 0的Tessellation Shader 细分曲面着色器 细分曲面着色器 Tessellation Shader 处于顶点着色器阶段的下一个阶段 我们可以看以下链接的OpenGL渲染流水线的图 https www ope
  • import pandas as pd 报错_chapter5-1 数据处理常见bug报错整理1

    本篇文章中 笔者把之前自己码代码的过程中出现的一些已解决的常见bug和解决方法进行了整理 还在不断更新中 主要内容有 一 与读取CSV文件有关的报错 1 1 utf 8 codec can t decode 1 2 pandas read
  • C语言中缀表达式求值(综合)

    题前需要了解的 中缀 后缀表达式是什么 不知道你们知不知道 反正我当时不知道 搜的百度 基本思路 先把输入的中缀表达式 后缀表达式 进行计算得出结果 栈 先进先出 先进后出 中缀转后缀 先把转换后的后缀表达式存入字符数组 从左至右依次读取
  • Mac 成功安装启动mysql,workbench连接不了

    首先启动并且成功登陆mysql 查看mysql占用端口号 执行命令 open Library LaunchDaemons com oracle oss mysql mysqld plist 我现在显示的是正常的端口号 如果你们显示的valu
  • 搭建部署svn服务器

    环境说明 环境 linux centos7 关闭防火墙和selinux systemctl stop firewalld setenforce 0 Ip 192 168 244 134 Svn服务器的搭建 安装svn yum install
  • 使用injectso 技术注入mtrace,对进程进行内存检测

    使用injectso 技术注入mtrace 对进程进行内存检测 来源 ChinaUnix博客 日期 2007 04 13 17 28 共有条评论 我要评论 在开发过程中 我们可以在程序中调用mtrace函数 来对内存管理进行跟踪 可如果已经
  • 华为一二三面

    目录 机试 关于机考简介 第一次机考之前HR小哥哥发给我的 好像没啥用 但还是放这儿吧 我的机试 2021年9月 一面 10 25 二面 10 26 三面 10 29 机试 关于机考简介 第一次机考之前HR小哥哥发给我的 好像没啥用 但还是
  • 【PyCharm】设置(风格

    设置方法见 分享一款好看的PyCharm风格 转 K Code 博客园
  • Invalid operation: Lob is closed. ERRORCODE=-4470, SQLSTATE=null

    使用db2的过程中出现这个错误 搜索有如下两种解决办法 这里尝试只有一种有效 记录如下 方法1 设置JDBC驱动的progressiveStreaming属性值为2 jdbc db2 localhost 50000 SAMPLE progr
  • Strtus2历史漏洞复现

    Strtus简介 Apache Struts是美国阿帕奇 Apache 软件基金会负责维护的一个开源项目 是一套用于创建企业级Java Web 应用的开源MVC框架 主要提供两个版本框架产品 Struts 1和Struts2 Struts2
  • 软件测试内容

    软件测试涉及以主要方面 需求收集 没有明确的要求 项目就无法起飞 这是最关键的阶段 需要将想法写成格式正确且易于理解的文档 以下生命周期代表了收集需求的关键步骤 收集 记录 分析 论证 验证 追踪 确认 如果错过了任何信息 以下是在此阶段应
  • python版本号比对_比较Python中的版本号

    假设我们必须比较两个版本号version1和version2 如果version1 gt version2 则返回1 否则 返回1 否则 当version1 我们可以假定版本号的每个级别的默认修订号为0 例如 版本号3 4的第一级和第二级修
  • Java从入门到实战总结-4.3、数据库进阶-事务

    Java从入门到实战总结 4 3 数据库进阶 事务 文章目录 Java从入门到实战总结 4 3 数据库进阶 事务 1 事务的语法 2 事务的ACID特性 3 事务的并发问题 4 事务隔离级别 5 不同的隔离级别的锁的情况 了解 6 隐式提交
  • 华为OD机试 - 字符串解密(Java)

    题目描述 给定两个字符串string1和string2 string1是一个被加扰的字符串 string1由小写英文字母 a z 和数字字符 0 9 组成 而加扰字符串由 0 9 a f 组成 string1里面可能包含0个或多个加扰子串
  • 云计算在IT领域的发展和应用

    文章目录 云计算的发展历程 云计算的核心概念 云计算在IT领域的应用 1 基础设施即服务 IaaS 2 平台即服务 PaaS 3 软件即服务 SaaS 云计算的拓展应用 结论 欢迎来到AIGC人工智能专栏 云计算在IT领域的发展和应用 o
  • ARMv8的两种执行状态: AArch64/AArch32

    Copied from ARM Compiler User Guide When compiling code you must first decide which target the executable is to run on A