ARM:为什么立即数只有 12 位?

2023-12-09

这是什么意思:我只有 12 位用于立即常量,所以我只能表示从 0 到 2^12 = 4096 的立即常量吗?操作数 2 如果是寄存器,可以有 32 位,但为什么立即数只有 12 位?这个数字从哪里来?


它由指令集定义。例如。这MOV指令编码为

31 28 | 27 26 | 25 | 24 23 22 21 20 | 19   16 | 15    12 | 11        0      |
cond  | 0  0  | I  | 1  1  0  1  S  | SBZ     | Rd       | shifter operand  |

(see "ARM Architecture Reference Manual, 4.1.29 "MOV")

“立即数”常量被编码在仅 12 位的“移位器操作数”中。其他指令具有类似的定义,有时是其他宽度。

存在此限制是因为(与 x86 不同)ARM 上的指令在使用 Thumb(2) 时始终为 32 位,有时为 16 位。为了支持无法直接用 12 位二进制数字表示的值,移位器操作数允许不同的寻址模式(例如左移、右移、旋转)。

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

ARM:为什么立即数只有 12 位? 的相关文章

  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • LC3 LEA指令和存储的值

    我对这个问题感到困惑 指令后寄存器0中存储的值是多少 LEA R0 A 被处决了吗 为什么答案是x370C 我认为应该将A的地址加载到R0中 如果是这样我们怎么知道地址 有人可以帮忙吗 非常感谢 ORIG X3700 LEA R0 A LD
  • 长多字节 NOP:通常理解的宏或其他符号

    x86 和 x86 64 处理器不仅具有单字节 这不是什么大秘密NOP指令 还包括各种类型的多字节类 NOP 指令 这些是我设法找到的 AMD 推荐 参考 AMD 系列 15h 处理器的 AMD 软件优化指南 文档 47414 http s
  • 我们可以拥有一台只用寄存器作为内存的计算机吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寄存器是计算机中最快的存储器 那么如果我们想构建一台只有寄存器甚至没有缓存的计算机 可能吗 我什至考虑用寄存器代替磁盘 尽管它们本质上是易
  • 分支预测器和分支目标缓冲区如何共存?

    我的问题是它们如何在现代 CPU 架构中共存并协同工作 你把它稍微颠倒了 每次获取时 您都会索引到分支预测器 它会告诉您刚刚收到的指令是否will be解码为已采取的分支 如果没有 则获取下一个连续地址 但是 如果您的分支预测器说它将是一个
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • Intel:序列化指令和分支预测

    英特尔架构开发人员手册 http www intel com content www us en architecture and technology 64 ia 32 architectures software developer v
  • 将 C 代码转换为 x86-64 汇编

    我正在尝试将 C 代码转换为 x86 64 我的目标是反转链表 传入的两个参数是 head ptr 和 offset to 以获取指针字段的地址 即指向列表中下一个节点的指针 据我了解 head ptr是通过rdi寄存器传入的 offset
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 学习 (N)ASM 的最佳资源是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想学习汇编已经有一段时间了 尽管我之前尝试过几次 但我还没有真正能够超越 Hello world 有
  • 如何在 MacOS 上使用 nasm 进行编译

    我正在尝试在汇编器上编译并链接我的第一个程序 我尝试编译以下代码 include stud io inc global main section text main xor eax eax again PRINT Hello PUTCHAR
  • 嵌入式系统:使用汇编语言时的内存布局

    根据我的理解 嵌入式系统运行机器代码 有多种方法可以生成此代码 一种是用 C 等高级语言编写程序 然后使用编译器获得这样的代码 另一种方法是用汇编语言为该嵌入式系统编写指令 并使用汇编器将其转换为机器代码 现在我们得到了加载到系统并执行的机
  • x86 asm 图形设置的分辨率高于 640x480?

    我刚刚开始使用汇编语言 感觉像学习新东西 并且遇到了一些问题 到目前为止 我一直在浏览的所有教程都没有回答 或者太旧而无法知道 1 我尝试了一些搜索 也许我只是不知道正确的关键字 但我找不到用于更改屏幕分辨率等的图形模式的更新列表 我发现的
  • 将十进制转换为十六进制

    首先 这是家庭作业 我正在尝试将 5 位数字读入寄存器 bx 假定该数字不大于 65535 16 位 以下是我尝试这样做的方法 但是 当我尝试打印该号码时 我仅打印输入的最后一位数字 这让我猜测 当我向 bx 添加另一个数字时 它会覆盖以前

随机推荐

  • 解析 Prolog 中的表达式并返回抽象语法

    我必须编写 parse Tkns T 它接受标记列表形式的数学表达式并找到 T 并返回表示抽象语法的语句 尊重操作顺序和关联性 例如 parse num 3 plus num 2 star num 1 T T add integer 3 m
  • javascript - 在 html 中使用函数调用 - 坏还是好?

    使用 Angular 会带来很多奇怪的代码风格 比如我一直以为这个
  • 使用 PHP 和 Apache 路由 URL 路径

    我正在尝试为我的网站创建一个漂亮的网址结构 我的路由器类仅在 url 的样式为 something value 时才起作用 我如何得到它 它的工作方式如下 something value 在我的 htaccess 中我有 Options F
  • 修改默认的 HTML5 视频控件

    我有一个相当不寻常的问题要问你们 这可能很愚蠢 但我是这个领域的新手 我真的很感激一些帮助 正如标题所示 我想知道是否有一种方法可以禁用默认浏览器控件中的特定按钮HTML5 video 我知道每个浏览器都有自己独特的一组控件 所以我认为我不
  • 有没有办法在 TextStream 文件中向后导航?

    我已经开始使用 fso 对象来克服 VBA 的 2GB 限制 一切看起来都符合我的目的 只是我找不到路要走向后在文本流文件中 为了继续前进 我使用了读取 字符数 和跳过 字符数 有办法这样做吗 我遇到了同样令人沮丧的限制 这是一个包装本机
  • 无法加载文件或程序集 HRESULT:0x80131515(将控制器添加到网络驱动器上具有程序集引用的 MVC 项目时)

    我见过这个 VSTS 2010 SGEN 错误 无法加载文件或程序集 HRESULT 异常 0x80131515 并且所有答案都不起作用 当我构建或执行任何操作时它也不会出现 我可以正常运行该项目 当我尝试添加实体框架模板化控制器时会发生这
  • 如何创建一个防止新头出现的水银钩?

    我有几个从 SVN 转换而来的存储库 并且我们希望确保当人们推送到存储库时他们无法创建额外的头 里面有几个钩子提示和技巧 wiki 页面如果有多个头 则可以防止推动 但是我如何构建一个防止推动的钩子new heads 似乎正确的方法是比较修
  • 如何为 Kubernetes 中托管的多个应用程序选择 Kafka 事务 ID?

    我有一个经典的微服务架构 所以 有不同的应用 每个应用程序可能有1 N实例 该系统部署到Kubernetes 所以 我们有很多不同PODs 可以随时启动和停止 我想实施读 处理 写模式 所以我需要 Kafka 事务 要配置交易 我需要设置一
  • 我在哪里对我的密码进行加盐和哈希处理?在客户端还是在主机?

    我认为直接在客户端计算机上对密码进行加盐和哈希处理会更明智 原因是 我实际上从来不想获取用户的密码 这个字符串应该对他保密 而不是对我们俩保密 现在有人争论说 你想对盐保密 所以你不能通过通道以明文形式发送它 显然 事实并非如此 所以现在我
  • 如何将行号投影到 Linq 查询结果中

    如何将行号投影到 linq 查询结果集上 而不是说 字段 1 字段 2 字段 3 字段 1 字段 2 字段 3 我想 1 字段1 字段2 字段3 2 字段1 字段2 字段3 这是我的尝试 public List
  • 如何在 Customer.create 之后解析 Stripe JSON 响应?

    我读过使用此版本 Stripe API 的其他线程 但实际解析嵌套 JSON 的问题从未得到解答 例如 创建信用卡后如何解析 Stripe JSON 响应 或标记为重复 例如 如何读取 stripe webhook 响应 通过 重复的起源
  • 事件句柄和可见

    好的 我正在为我的班级做一个项目 我必须将所有内容都放在一页上 并在顶部有一个菜单 菜单中应该有新建 打开 来自 Html 保存和退出 我已经完成了除了 From HTML 之外的所有操作 我有点困惑 当用户单击 来自 HTML 时 需要将
  • java和python之间传递数据

    如果我的问题很菜鸟 我很抱歉 我正在运行 Django 1 2 和 pgsql 8 4 我需要在获取用户的输入后运行 Java 程序 进行一些计算并将结果返回给用户 我可以知道在 Java 和 Python Django 之间传递数据的最佳
  • 如何通过 ingress 将服务暴露给外部 Kubernetes 集群?

    我正在努力将 AWS 集群中的服务公开给外部并通过浏览器访问它 自从我的上一个问题还没有得出任何答案 我决定从几个方面简化问题 首先 我创建了一个无需任何配置即可运行的部署 基于本文 I did kubectl create namespa
  • 将字符串值聚合到列表中

    我正在尝试使用一些非常简单的逻辑将未旋转的列转换为本质上相当于分组列表的内容 然而 在有效地做到这一点上遇到了困难 本质上 我有一个数据集 如下所示 CUST ID ORDER 1 Cake 1 Bread 2 Cake 3 Cake 3
  • 使用自动实现的属性或自己实现该属性

    在 C 中 我们可以创建一个自动实现的属性 如下所示 public string MyValue get set 然而 我们也可以像这样自己创建一个属性 private string myValue public string MyValu
  • 颜色条不适用 vmin 和 vmax

    我有以下奇怪的行为 当我限制图形的范围时 颜色图仍然显示它 import matplotlib pyplot as plt import numpy as np fig ax plt subplots x np linspace 0 1 1
  • 复选框标签的 jQuery 选择器

  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • ARM:为什么立即数只有 12 位?

    这是什么意思 我只有 12 位用于立即常量 所以我只能表示从 0 到 2 12 4096 的立即常量吗 操作数 2 如果是寄存器 可以有 32 位 但为什么立即数只有 12 位 这个数字从哪里来 它由指令集定义 例如 这MOV指令编码为 3