对 PowerPC 寄存器值感到困惑)?

2024-02-13

所以,我一直在学习 PowerPC 来完成 Xbox 的简单逆向项目,但我总是对这样的事情感到困惑。

    lwz       r11, 0(r29)   # Loads 0x34 from 0x10710 and stores in r11
    lwz       r10, 4(r29)   # Loads 0x64 from 0x10714 and stores in r10
    addi      r11, r11, 0x7F # r11 = 0x34 + 0x7F = r11 = 0xE3
    clrrwi    r10, r10, 7   # r10 = r10 (0x64) + 0xFFFFFF80
    clrrwi    r31, r11, 7   # r31 = r11 (0xE3) & 0xFFFFFF80

无论如何,我无法理解的是最后两行。寄存器怎么可能有一个值+另一个值?另一个寄存器怎么可能有一个值和另一个值?如果我将加法作为下一行,我会添加什么值?抱歉,这是一个奇怪的转变,因为我的母语是 C++ 和 C#,我不想放弃这个语言,因为尽管我遇到了麻烦,但它还是很有趣。


我不明白注释“# r10 = r10 (0x64) + 0xFFFFFF80”中的“+”,这可能是一个拼写错误。但我理解下一行的注释,“# r31 = r11 (0xE3) & 0xFFFFFF80”。

如果你看一下PowerPC 2.02 第 1 册文档 http://www.ibm.com/developerworks/systems/library/es-archguide-v2.html对于“Rotate Left Word Immediate then AND with Mask M-form”,它显示了 clrrwi 的实际操作。

clrrwi Rx,Ry,n

相当于

rlwinm Rx,Ry,0,0,31-n

对于 clrrwi,rlwinm 向左循环字 0 位,因此 clrrwi 指令不进行循环。它生成一个掩码,其中位 0-24 为 1,其他位置(位 25-31)为零,因此为 n=7 生成的掩码为 0xFFFFFF80。旋转的数据与生成的掩码进行 AND 运算,因此这就是第二个 clrrwi 的注释有意义的原因。 clrrwi 生成一个掩码来清除一个字中的右 n 位,0xFFFFFF80 是用于清除的掩码。

顺便说一下,0x34+0x7F=0xB3。

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

对 PowerPC 寄存器值感到困惑)? 的相关文章

  • MPC8314 (e300核) uboot 调试

    历经2个多月 完成了MPC8314最小系统 uboot 及Linux内核和根文件系统的调试 这是我第一次从头开始做小系统和内核的移植工作 虽然调试的比较辛苦 但是收获还是很多的 下面就介绍一下调试的过程和一些原理性的东西 1 MPC8314
  • 获取用户 Xbox 成就列表?

    有没有办法从 Xbox 获取用户的成就列表而不处理屏幕抓取等 网站如何喜欢http www trueachievements com做吗 他们绝对不是屏幕抓取 因为他们没有我的 Live ID 凭据 我知道 Xbox LIVE 社区开发者计
  • 在 RVM 环境中的 Ruby cron 作业中找不到 Gem

    我正在尝试在 RVM 环境中运行 10 5 的旧 PPC 机器上运行一个简单的 ruby 脚本 搜索SO 我已经遵循了从中选择的答案post 这是 cron 中的结果行 SHELL bin bash 00 BASH ENV bash pro
  • vec_sld 字节序敏感吗?

    我正在开发具有核心加密功能的 PowerPC 机器 我在使用内置函数将 AES 密钥扩展从大端移植到小端时遇到问题 大端有效 但小端无效 下面的算法是一个片段中呈现的IBM 博客文章 我认为我已将问题隔离到下面的第 2 行 typedef
  • 如何免费制作 Xbox Live 独立游戏?

    有没有办法制作免费的 Xbox Live 独立游戏 现在我并不是想在市场上向全世界发布它 而是想在我的 Xbox 上免费测试它 我知道您必须在 Xbox 和 PC 上下载 XNA 应用程序 但我是否需要 XNA Creators Club
  • 是否可以让 Node.js 使用 Rhino 作为 Javascript 引擎?

    我在网络应用程序上使用 Node js 完成多项工作 到目前为止一切正常 但 Node js 使用 Google 的 V8 作为默认的 Javascript 引擎 JSE 并且 V8 只能在 x86 和 ARM 指令集架构 ISA 上运行
  • “向量长长”的可用性是什么?

    我正在一台旧的 PowerMac G5 上进行测试 它是一台 Power4 机器 构建失败 make g DNDEBUG g2 O3 mcpu power4 maltivec c ppc simd cpp ppc crypto h 36 e
  • 错误:“uint8_t”尚未声明[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在尝试在 openSUSE 11 2 中使用 xbox360 控制器作为操纵杆 尝试编译 xboxdrv 时 htt
  • 线程实现

    我想知道如何实施我自己的线程库 我拥有的是CPU PowerPC架构 和C标准库 有没有我可以看看的开源轻量级实现 最简单的线程需要 一些内存用于堆栈空间 存储其上下文的地方 即寄存器内容 程序计数器 堆栈指针等 最重要的是 您需要实现一个
  • 无序执行会导致推测内存访问吗?

    当无序处理器遇到类似情况时 LOAD R1 0x1337 LOAD R2 R1 LOAD R3 0x42 假设所有访问都会导致缓存未命中 处理器是否可以在请求 R1 甚至 0x1337 的内容之前向内存控制器请求 0x42 的内容 如果是这
  • Spidev 不使用 ioctl 同时写入/读取

    我希望找到一些帮助 即使这个问题可能更多地与硬件相关而不是与软件相关 我们将会看到 我正在开发基于 Freescales P1021 处理器 ppc e500v2 内核 的定制板 将连接外部 PCB 并可通过 SPI 进行配置 该外部 PC
  • P1010 MAC到交换机端口直连,无需PHY

    我有一个带有飞思卡尔 P1010 处理器的定制板 其中 P1010 的 eTSEC2 增强型 3 速以太网控制器 端口在 SGMII 模式下直接连接到 Marvell 88E6046 以太网交换机端口 9 Linux 3 17 DSA 驱动
  • 如何在Power 8或PPC64机器上安装pytorch?

    我正在尝试安装pytorch using conda on Power 8 IBM 机器 虽然 我读过来自IBM blog https developer ibm com tutorials install pytorch on power
  • 如何让 GCC 将“move r10, r3; store r10”组合成“store r3”?

    我正在使用 Power9 并利用称为 DARN 的硬件随机数生成器指令 我有以下内联汇编 uint64 t val asm volatile xor 3 3 3 n r3 0 addi 4 3 1 n r4 1 failure 1 n by
  • 我如何知道 ELF 目标文件中的调试信息是什么类型?

    我有一个 ELF 目标文件 我想知道它包含哪种类型的调试信息 它是用针对 PPC 架构的 Diab 编译器 C 源代码 编译的 我很确定它是用调试符号构建的 我尝试使用提取调试信息dwarfdump但我不工作 所以我猜调试信息不 是 DWA
  • 对 PowerPC 寄存器值感到困惑)?

    所以 我一直在学习 PowerPC 来完成 Xbox 的简单逆向项目 但我总是对这样的事情感到困惑 lwz r11 0 r29 Loads 0x34 from 0x10710 and stores in r11 lwz r10 4 r29
  • 通过 getauxval 检测 Power8 核心加密?

    我使用的是 GCC112 它是运行 Linux 的小端 Power8 机器 Power8有核心加密 https www ibm com developerworks library se power8 in core cryptograph
  • Xcode4 与 Mac OS X 10.4 SDK

    在 Xcode 的最新版本 Xcode 4 0 中 不再包含 10 4 SDK 但是 我仍然需要支持 10 4 和 PowerPC 版本 我已经安装了最新的 Xcode 3 2 6 它仍然包含 10 4 支持 然后我安装了Xcode4 有没
  • 如何从 OpenSSL 中的 perl 脚本生成程序集文件

    在 OpenSSL 版本 1 1 0e 的开源代码中 我看到一些函数定义是由文件夹中存在的 perl 文件生成的 在加密货币内每个文件夹中的 build info 文件中 他们编写了一些行以从相应的 pl 生成 s 例如 为了生成aes p
  • 开放固件设备树概述/参考手册

    我正在尝试为嵌入式 PowerPC 板设置驱动程序 今天执行此操作的正确方法是使用 OpenFirmware 设备树数据结构 dtb 文件 从 dts 文件编译 创建树非常简单 但是如何让我的设备驱动程序找到它的节点和其中的数据 我还没有找

随机推荐