32位OR如何保持加载指令?(RISC风格32位架构)

2023-12-20

我对指令大小和可寻址空间有点困惑(我假设指令大小应该与地址位的大小相同。我在书中没有找到足够的解释)如果我是正确的,那么理论上如果我们有一个 2^32 32位架构(RISC风格)中的内存可寻址单元(字节)4字节大小的加载指令如何保存操作码和地址?


您假设单个指令可以对来自任意绝对地址的负载进行编码。在 x86 上也是如此,即使在 64 位模式下也是如此(但有一个特殊的操作码用于从没有位移或索引寄存器的 64 位绝对地址加载,并且目标必须是 rax)。

在大多数 RISC 架构上,从绝对地址加载通常使用两条 mov-immediate 指令来设置寄存器的上半部分和下半部分,然后使用该寄存器作为加载的地址。

例如,

int a;
int foo(void) { return a; }

编译为(godbolt 上的 ARM gcc 4.8.2) http://goo.gl/yIZoaJ:

foo():
    movw    r3, #:lower16:.LANCHOR0 @ tmp113,
    movt    r3, #:upper16:.LANCHOR0 @ tmp113,
    ldr r0, [r3]    @, a
    bx  lr  @
a:
    .space  4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

32位OR如何保持加载指令?(RISC风格32位架构) 的相关文章

  • CPU是如何做减法的?

    我有一些基本的疑问 但每次我坐下来尝试面试问题时 这些问题和我的疑问就会出现 假设 A 5 B 2 假设A和B都是4字节 那么CPU是怎么做的呢 A B添加 我知道 A 的符号位 MSB 为 0 表示正值 B 的符号位为 1 表示负整数 现
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 68HC11计算sin(x)的汇编代码

    68HC11 使用泰勒级数或查找表计算正弦值的汇编代码是什么 显示值只能是整数 查找表如何工作 在这种情况下 如何使用它来实现泰勒级数 http en wikipedia org wiki Taylor series 如果您正在寻找浮点解决
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • AVX-512CD(冲突检测)与原子变量访问有何不同?

    所以我在看他们展示了如何 void Histogram const float age int const hist const int n const float group width const int m const float o
  • ARMv8 A64 汇编中立即值的范围

    我的理解是 ARMv8 A64 汇编中的立即参数可以是 12 位长 如果是这样的话 为什么这行汇编代码是 AND X12 X10 0xFEF 产生此错误 使用 gcc 编译时 Error immediate out of range at
  • 确定分区属于什么文件系统

    操作系统如何知道分区正在使用什么文件系统 换句话说 FAT16 32 NTFS ext2 3等如何区分 如果您在 Windows 上使用 Win32 API 则可以调用 GetVolumeInformation http msdn micr
  • “mov (%ebx,%eax,4),%eax”如何工作? [复制]

    这个问题在这里已经有答案了 一直在从事装配作业 并且在很大程度上我对装配非常了解 或者至少对于这项任务来说足够好 但这个 mov 的声明让我很困惑 如果有人能解释这个 mov 语句如何操作寄存器值 我将非常感激 mov ebx eax 4
  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • 如何用Java写入OS系统日志?

    Mac OS 有一个名为 Console 的应用程序 其中包含记录的消息 错误和故障 我相信 Windows 中的等效项是事件查看器 我想 Linux 上也有一个 但我不知道它是什么 也不知道它在哪里 是否可以像这样从 Java 输出获取消
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • 怎样才能使 Windows 成为一个开箱即用的 POSIX 兼容操作系统?

    这个问题的动机是我的一个牵强的梦想 即 nix 平台上可用的许多优秀软件可以轻松移植到 Windows 微软最近对开源和开放性采取了不同的方法 所以我真的很想知道如果微软有这样的倾向 这样的事情会有多可行 我很好奇的一些更具体的事情是 是否
  • 如何将 x86 GCC 风格的 C 内联汇编转换为 Rust 内联汇编?

    我在 C 中有以下内联汇编 unsigned long long result asm volatile byte 15 byte 49 shlq 32 rdx orq rdx rax a result rdx return result
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • MikeOS 引导加载程序中的堆栈段

    我不明白这段代码 mov ax 07C0h Set up 4K of stack space above buffer add ax 544 8k buffer 512 paragraphs 32 paragraphs loader cli
  • 如何编译GCC生成的asm?

    我正在玩一些汇编代码 有些事情困扰着我 我编译这个 include
  • 如何使用 os.chdir 转到减去最后一步的路径?

    例如 一个方法传递了一个路径作为参数 这个路径可能是 C a b c d 如果我想使用 os chdir 更改为 C a b 怎么办 c 没有最后一个文件夹 os chdir 可以接受 命令吗 os chdir 可以采取 作为论点 是的 然
  • 为什么我的代码显示垃圾?

    当我也想打印列表中的每个数字时 我的代码显示垃圾 有什么问题吗 输出应如下所示 给定的数组是 2G 4 PT为什么这是垃圾总数是 7 Code ASSUME CS CODE DS DATA SS STK ORG 0000H DATA SEG

随机推荐

  • 如果父 pom 具有 Java EE BOM 依赖项,是否应该在子 pom 中显式提及所有依赖项?

    在我们的项目中 我们有 REST 层 EJB 层和域 实体 层的单独模块 以下是对 REST 层的依赖
  • 如何在所有单元格周围的空白区域中接收 UICollectionView 上的触摸

    我有一个UICollectionView里面有不同的物品 当我点击一个项目时 我使用 void collectionView UICollectionView collectionView didSelectItemAtIndexPath
  • Three.js 实时动画

    我正在使用 Three js 并对一些对象进行动画处理 我使用 Three js 的 animate 函数对对象进行动画处理 基本上是这样的 function animate object position z 不幸的是 这被称为每个渲染帧
  • 一组三个字段的哈希码

    我有三个字段 即 Number1 Number2 Time 我正在尝试用 java 编写一个返回唯一哈希值的函数 long 需要是 hash 的返回类型 对于上述字段 然后 该哈希将用于存储与哈希集中上述字段相对应的数据库行 我是编写哈希代
  • Android Facebook SDK 3.0 无需显式登录即可简单更新状态?

    我想知道更新用户 Facebook 状态的最简单方法 我想简单地显示一个 共享 按钮 当用户触摸 共享 时 如果他们已经登录 Facebook 则会出现一个对话框 让他们可以选择在提交到 Facebook 之前编辑自己的帖子 如果他们尚未登
  • eval 和反引号(反撇号)之间的区别

    谁能告诉我这里最大的区别是什么以及为什么后者不起作用 test ls l 现在两者都工作正常 eval test echo test 但在这种情况下 test ls l gt gt test log eval test echo test
  • 将日期设置为未来 10 天,格式为 dd/mm/yyyy(例如 21/08/2010)

    我非常感谢您帮助创建一些 JavaScript 这些 JavaScript 最终将在 Selenium 中使用 自动设置当前日期前 10 天的日期 并以以下格式 dd mm yyyy 显示 我目前有下面的脚本 但我没有得到任何结果 var
  • 在 WPF 中设置主题

    我有一个相对简单的问题 我似乎无法弄清楚 我已经从 Internet 下载了一些 XAML 格式的主题文件 我想将它们用作我的 WPF 应用程序中的主题 你怎么做到这一点 感谢所有帮助 将 theme xaml 文件添加到您的项目中 右键单
  • 类别和包中的类组织在不同版本的 Pharo 中如何工作?

    有人可以解释一下 Pharo 中的类组织在不同版本的 Pharo 中是如何工作的吗 所有类都是 Smalltalk 全局的一部分 一直都是 似乎一直这样 类可以有一个类别 但这只是一种标签 一直都是 好像还是这样 但有时类别会以某种方式映射
  • 用 ggvis 将 RMarkdown 编织到 Word

    当我尝试用以下内容编写 RMarkdown 文档时ggvis绘图到 Word 我从 Rstudio 收到以下消息 Error Functions that produce HTML output found in document targ
  • 将过滤器从一个交叉过滤器数据集应用到另一个交叉过滤器

    我有两个数据集 它们具有相似的列 维度 但按行进行不同的分组并包含不同的度量 Ex 数据集1 Year Category SubCategory Value01 Value02 2000 Cars Sport 10 11 2000 Cars
  • IntelliJ 显示单元测试未涵盖的更改行

    在日常工作中 我打算为我更改的代码编写测试 我的工作流程通常是这样的 查找要更改的代码 编写失败的测试 更改代码 观看测试通过 在提交之前 我运行所有测试 但实际上 我可以在不知不觉中更改有关我们的测试覆盖范围的任何行 我现在所做的通常是查
  • strstr 显示出现之前的字符串

    我想在针出现后得到字符串的第一个位 如下所示 user strstr email protected cdn cgi l email protection true 但这仅适用于 PHP 版本 5 3 0 我有 5 2 9 有什么办法可以得
  • 用于 javascript 的 QT 5.4 WebEngine 开发工具

    我正在使用 QWebEngineView 和 QWebEnginePage 创建一个应用程序 我想知道是否有办法激活 Web 开发工具 我需要调试 html javascript 代码 就像您在 Chrome 上使用 Google Deve
  • 读取一堆 JSON 文件,转换它们,然后保存它们

    我正在努力实现这一点Gulp 阅读每一个 json给定目录 包括子目录 中的文件 以某种方式改变它们 例如添加新的根级别等 将它们保存到一个新目录中 保持原始结构 我迷失的地方是如何通过管道读取 写入 JSONsrc 我现在有以下骨架 gu
  • int索引 = Convert.ToInt32(e.CommandArgument.ToString());不管用

    请帮我 int index Convert ToInt32 e CommandArgument ToString 这对我不起作用 它显示异常 输入字符串的格式不正确 e CommandArgument不为空 我正在从中获得价值 你应该像下面
  • Imagemagick SVG 到 PDF 转换图像质量很差

    我们正在尝试将 SVG 宽度 737 高度 521 转换为 A4 尺寸的 PDF 问题是生成的图像质量非常糟糕 这就是我们正在做的 SVG 带有远程图像 URL
  • 领域模型与数据库模型不同吗?

    我理解 DDD 中的概念 但在实践中却有点令人困惑 我正在使用 C SQL Server 和 EF 我发现根据我的数据库模式 持久性模型看起来与我的聚合不同 为了定义干净 漂亮的聚合 实体和值对象 我的域模型看起来与数据库模型不同 此外 如
  • 如何通过引用传递枚举?

    我有一个带有四个键的枚举 我将其作为接口程序的输入 并且我想将枚举按值传递给接口函数 该函数已经变得相当长 枚举是这样的 enum MYKEYS W S O L 还有一个布尔数组 我必须通过引用传递 这也有点棘手 bool key 4 fa
  • 32位OR如何保持加载指令?(RISC风格32位架构)

    我对指令大小和可寻址空间有点困惑 我假设指令大小应该与地址位的大小相同 我在书中没有找到足够的解释 如果我是正确的 那么理论上如果我们有一个 2 32 32位架构 RISC风格 中的内存可寻址单元 字节 4字节大小的加载指令如何保存操作码和