在ARM文档中,可以找到如下两句话:

  • When the processor moves from a higher to a lower Exception level, the Execution state can stay the same, or it can switch from AArch64 to AArch32.
  • When moving from a lower to a higher Exception level, the Execution state can stay the same or switch from AArch32 to AArch64
    翻译之后就是:
  • 如果从高的异常级别切换到低的异常级别,执行状态可以保持不变,也可以从aarch64切换到aarch32;
    例如从linux kernel切换到app,如果linux kernel是aarch64,那么app可以是aarch64或aarch32,如果linux kernel是aarch32,那么app只能是aarch32;
  • 如果从低的异常级别切换到高的异常级别,执行状态可以保持不变,也可以从aarch32切换到aarch64;
    例如从app切换到linux kernel,如果app是aarch64,那么linux kernel可以是aarch64或aarch32,如果app是aarch32,那么linux kernel可以是aarch64或aarch32;

其实也可以这样总结:高的异常级别的执行状态,一定要大于等于低的异常级别的执行状态; 即EL1的执行状态要大于等于EL0的执行状态…

那么ARM为什么会有这种设计或约束呢?
我们以linux kernel和app(EL1 <—> EL0)为例来看:
如果linux kernel是aarch64的,那么在linux kernel启动和运行时修改的ARM系统寄存器(如SCTLR\TTBLRx等),都是以aarch64修改的,这些寄存器的修改当然也会map到aarch32上。
在系统切换app之后,linux kernel中修改的这些寄存器的属性对aarch32/aarch64依然都生效。 故如果EL1是aarch64,那么EL0可以是aarch64或aarch32;

如果linux kernel是aarch32的,那么在linux kernel启动和运行时修改的ARM系统寄存器(如SCTLR\TTBLRx等),都是以aarch32修改的,这些寄存器的修改不会map到aarch64上。
在系统切换app之后,linux kernel中修改的这些寄存器的属性仅对aarch32生效。 故如果EL1是aarch32,那么EL0只能是aarch32;

[思考]-32位的应用程序为什么不能跑64位的应用程序相关推荐

  1. 支持64位的打印服务器,使用环境打印服务器是32位,添加共享的计算机是64位

    使用环境打印服务器是32位,添加共享的计算机是64位. 添加网络打印机 Win +R 输入\\10.199.4.x 进去直接打开或者连接,然后设置为默认打印机.或者从网络共享上查找也可以. (1) 不 ...

  2. java double long 取值_由一道题引起的思考? java中 long 和double都是64位。为什么double表示的范围大那么多呢?...

    由一道题引起的思考? java中 long 和double都是64位.为什么double表示的范围大那么多呢? 百度标准答案是这样子的: double是n*2^m(n乘以2的m次方)这种形式存储的,只 ...

  3. 64位树莓派运行linux,树莓派3B+安装64位debian GUN/Linux系统

    经过前段时间的努力,已经成功的将debian的ARM64版本跑在了树莓派3B+上.独乐乐不如众乐乐,所以将自己努力的成果分享,并详细介绍安装教程,希望能为树莓派爱好者做出些许贡献. 我已经制作好了镜像 ...

  4. 计算机无法安装64位操作系统,怎么看电脑能不能装64位系统|什么样的电脑可以装64位系统...

    电脑什么硬件配置可以装64位系统?操作系统对硬件都有一定的要求,尤其是win7 64位系统,对电脑配置要求比较高.如果要安装64位系统,需要查看电脑硬件是否符合装64位系统要求,那么要怎么查看电脑能不 ...

  5. 现在计算机有64位吗,任何电脑都可以装64位系统吗|是不是所有的电脑都可以装64位系统...

    电脑都可以装64位系统吗?相信大家都看到,现在新买的电脑都是自带64位系统,这时候就有部分用户产生了疑惑,是不是所有电脑都能装64位系统?其实不然!操作系统分32位和64位,就说明了有些电脑不能装64 ...

  6. 键盘与显示实验程序c语言,16位微机原理,32位微机原理接口教学实验系统,64位微机原理接口实训...

    TW-X38 16.32位微机原理与接口教学实验系统 一.硬件概述 TW-X38现代32位微机原理与接口技术教学实验系统的升级换代产品,采用Intel i386EX嵌入式微处理器作为系统核心,全面支持 ...

  7. 把32位的SharePoint服务器场迁移到64位, 应该怎么做?

    总体步骤如下: 1. 迁移已经存在了的数据库服务器到新的数据库服务器. 先迁移这一层的目的是避免可能发生的一些由64位系统对32位系统执行查询或写入操作所引起的性能问题. 2. 迁移WFE服务器到64 ...

  8. linux 32库路径,linux – 共享库如何在64位/ 32位混合系统中工作?

    将32位和64位目录添加到LD_LIBRARY_PATH. 如果这样做,那么32位或64位的ld.so将使用正确的库. 例如一个32位测试应用程序"test32"和64位测试应用程 ...

  9. 计算机二级安装64位的还是,判断电脑适合装64位还是32位系统需要cpu支持,很多人都搞错了!...

    昨天把系统又重装了一下,猛然发现,我的电脑可以装64位操作系统,而我一直用的是32位操作系统,因为几年前,64位操作系统缺乏驱动,市面上的软件在32位(X86)操作系统兼容性好,而这几年,硬件配置的提 ...

最新文章

  1. pandas将列表list插入到dataframe的单元格中、pandas使用read_csv函数读取文件并设置保留数值的前置0( leading zeroes)
  2. iOS - OC 与 C 互相操作
  3. 判断字符串出现次数最多的字符 及 次数
  4. mysql数据库中的int类型_MySQL中int(M)和tinyint(M)数值类型中M值的意义
  5. C#.Net工作笔记009---c#中Yield Return语法的作用和好处
  6. SliderBar4.0常用滑块滚动效果封装
  7. java基础总结01-简介
  8. A[1083]List Grade 水题
  9. hightopo学习之旅一 -- 节点动画
  10. Intent跳转地图应用(百度地图、高德地图)
  11. SD卡windows无法格式化
  12. java调用本地打印机,绘制打印模板,小票模板
  13. Android SystemUI下拉状态栏添加快捷开关
  14. CodeWarrior for S12(X) V5.1 Special详细安装过程
  15. 华为java一个月写多少行代码_[财经]阿里员工吐槽华为:面试官1万行代码都没写过? - 南方财富网...
  16. 音乐格式怎么转换,音频格式转换的方法
  17. 【Vue3 | 实现精美待办】01.项目启航
  18. 【例题 7-11 UVA - 12325】Zombie's Treasure Chest
  19. uniapp Modal自定义弹窗
  20. 开源AI项目-老照片修复之 Bringing Old Photos Back to Life

热门文章

  1. php 统计一周数据,如何获取本周、上周、本月、上个月数据的起止时间 PHP
  2. python django 表单_Django-表单处理
  3. Tool:微信使用技巧之手把手教你如何在电脑端同时登录多个微信账号之图文教程详细攻略
  4. ubuntu 安装git
  5. Day 8 面向对象
  6. seaJS简介和完整实例
  7. 【c++】 类与对象
  8. 常用代码整理(重要)
  9. hdu 1081To The Max
  10. iphone 软键盘