理解这部分手臂的汇编代码

2024-03-28

.syntax unified
.thumb

.cpu cortex-m4
.arch armv7e-m
.fpu fpv4-sp-d16

/* Changes from unprivileged to privileged mode. */
.thumb_func
.section    .kernel
.global     raise_privilege
.type       raise_privilege, %function
raise_privilege:
mrs     r0, control
bic     r0, r0, #1
msr     control, r0
dsb
isb
bx      lr

这是arm汇编代码的一部分。我可以查看芯片手册来弄清楚指令的含义。但我不知道如何弄清楚汇编程序指令的行为,例如.thumb_func。而且,我也不知道如何使用这部分代码,它看起来不像常规函数。所以我不知道如何“调用”它。


  • The 指示从一个开始.是真正的汇编指令。您可以在以下位置查找它们GAS:ARM 机器指令 https://sourceware.org/binutils/docs/as/ARM-Directives.html
  • .syntax unified表示使用统一的 ARM/Thumb 汇编语法。概念已解释here https://developer.arm.com/documentation/dui0473/i/Cjagjjbc and here https://sourceware.org/binutils/docs/as/ARM_002dInstruction_002dSet.html#ARM_002dInstruction_002dSet.
  • .thumb_func发出用于 ARM-Thumb 互操作的 Thumb 模式功能启动的信号。概念已解释here https://developer.arm.com/documentation/dui0471/i/Bcghfebi and here http://twins.ee.nctu.edu.tw/courses/ip_core_01/lab_hw_pdf/lab_1.pdf.
  • raise_privilege看起来完全像void raise_privilege(void) 叶函数(即它不调用其他函数)对我来说是 C 语言。调用它:


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

理解这部分手臂的汇编代码 的相关文章

  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 可以使用Visual Studio 2012构建ARM桌面程序吗?

    我正在使用 Visual Studio 2012 beta 我的桌面 win32 程序在 ARM 架构中编译得很好 升级到 Visual Studio 2012 RC 后 编译器无法工作并出现以下错误 不支持为 ARM 平台编译桌面应用程序
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 分配内存空间的宏

    我需要让一个汇编程序员来计算帕斯卡三角形 https en wikipedia org wiki Pascal 27s triangle 这样帕斯卡三角形的每一行都与其他行分开存储在内存中 我想做一个 但我不知道如何使用宏在汇编中做到这一点
  • elf .rel.text 部分中 R_386_32/R_386_PC32 的含义

    为了理解重定位的概念 我编写了一个简单的 chk c 程序 如下所示 1 include
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • DASM 汇编器中的 ASCII 到 C64 屏幕代码

    我正在通过 C64 模拟器学习 6502 micro 的汇编 目前正在尝试将字符串输出到屏幕 这是我的代码 processor 6502 org 1000 ldx 00 using x register as column counter
  • x86-64 上这个语句有什么问题?

    该函数的目的是获取堆栈的起始地址 unsigned long find start void asm movq rsp eax 当我编译它时 出现错误 Error suffix or operands invalid for movq mo
  • AVX512 掩码寄存器(k1...k7)的 GNU C 内联 asm 输入约束?

    AVX512 为其算术命令引入了 opmask 功能 一个简单的例子 上帝螺栓 org https godbolt org z P7xWD8 include
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • 减法进位标志

    我正在使用 MASM32 有了这个代码 mov eax 5 sub eax 10 CF 状态标志将被设置 但使用我的铅笔和纸 我实际上看到 MSB 没有任何进位 是的 我知道从较少的数字中减去大的数字集CF 但我想知道为什么 因为使用这段代
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?

    我正在对科学应用程序进行一些数值优化 我注意到的一件事是 GCC 会优化调用pow a 2 通过将其编译成a a 但是调用pow a 6 没有优化 实际会调用库函数pow 这大大降低了性能 相比之下 英特尔 C 编译器 http en wi
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L
  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板

随机推荐

  • 如何回滚UPDATE语句?

    这可以在不恢复整个数据库的情况下实现吗 我已经进行了想要撤消的更改 但没有使数据库脱机 也没有进行完全恢复 不 SQL Server 没有 Ctrl Z 您可以通过将所有 DML 语句包装在事务中来保护自己免受这种情况的影响 所以你有这样的
  • 在 Windows 7 中安装/卸载服务:“错误 1001。指定的服务已标记为删除”

    我目前正在 NET 4 0 Visual Studio 2010 Windows 7 32 位中开发 Windows 服务 我有一个安装程序项目可以为我进行安装 当我安装该服务 卸载它并尝试再次安装时 出现以下错误 错误1001 指定的服务
  • Ionic/Angular - 多条路线不起作用

    我有一个使用选项卡模板的 Ionic 项目设置 这是我的问题 我有一个 活动 选项卡 页面上有 3 个按钮 Friends Near Me Global 当页面首次加载时 它将显示朋友的帖子列表 当我单击 我附近的 按钮时 它应该用我附近的
  • NetNamedPipeBinding 安全吗?

    我想知道 netNamedPipeBinding 是否被认为是安全的 一方面 NetNamedPipeBinding 仅在传输层上实现安全性 并且它使用 NTLM source http msdn microsoft com en us l
  • .NET 中的 .CSV 到 .MDB 转换

    我已使用 ado net 将 mdb 文件转换为 CSV 格式 然后循环记录集并将数据写入 csv 文件中 现在我需要做相反的事情 我必须将 CSV 文件转换为 mdb 文件 具体来说是访问表 有没有任何编程代码可以帮助我解决这个问题 由于
  • 以测试驱动方式开发的开源项目有哪些好的例子?

    I found 具有良好质量测试的开源项目 https stackoverflow com questions 2893841 open source projects with good quality tests但我想问一些不同的问题
  • AJAX 将多个数据发送到 ASP.Net MVC

    我在通过 ajax jquery 将多个对象发布到 MVC 4 控制器时遇到问题 已经过去几周了 但我似乎找不到解决方案 我尝试了几种方法 有时filterModel对象为空 有时字符串参数为空 即使我对是否指定contentType进行字
  • 尝试在 Android 上运行我的 React Native 应用程序时出错

    我已经构建了我的 React Native 应用程序 并使用我的 iOS 设备进行了几个月的测试和故障排除 现在我第一次尝试在 Android 上构建和测试该应用程序 问题是 我在尝试运行 Android 版本的应用程序时不断遇到错误 经过
  • 如何在 matplotlib 中根据 x、y、z 坐标绘制等高线图? (plt.contourf 或 plt.contour)

    These meshgrid对我来说使用起来有点混乱 我正在尝试用以下内容绘制散点图x and y坐标与覆盖在散点图上的等值线图 并具有连续分布z坐标 类似于高程图 如果我使用meshgrid使用 x y 和 z 坐标 然后我得到每个的 3
  • 如何确定 VB6 应用程序和使用 CreateObject() 实例化的 exe 之间的关联

    我们需要弄清楚服务如何查看正在运行的 VB6 应用程序和 或其 DCOM 生成的 exe 并找出哪个 VB6 应用程序与哪个 DCOM exe 配合使用 VB6 应用程序和生成的 exe 均位于同一服务器上 我们有一个 VB6 应用程序 它
  • UINavigationController 和 viewWillDisappear

    因此 我的应用程序中有一个 UINavController 并尝试在用户按下后退按钮时执行一个方法 我到处搜索 只能找到断章取义的零碎内容 有没有办法实现某种检查 当用户按下后退按钮以关闭当前视图时进行捕获 出于某种原因 弹出视图的 vie
  • try/catch/finally 在 groovy 编译器异常的情况下屏蔽 Jenkinsfile 问题

    我的 Jenkinsfile 中有类似于以下代码的代码 node checkout scm do some stuff try do some maven magic catch error stage Cleanup after fail
  • 用于接收 UDP 数据包的可变大小缓冲区

    我有一个 UDP 套接字 它将接收一些可能不同大小的数据包 并且我异步处理它 socket async receive from boost asio buffer buffer 65536 senderEndpoint handler 这
  • Espresso 测试调用视图按钮单击等待调用 api 响应数据进度对话框退出

    我使用 via espresso 库开发自动化测试 有时我 运行测试时曾经收到错误消息 无法启动意图 Intent 在 api 响应数据进度对话框退出后 我调用 view btn click 很长时间 请帮助我为那些有使用浓缩咖啡技术进行自
  • Angular http.get() url 作为原始 HTML

    我正在为作业创建一个网站 我想在其中动态加载一些数据 问题是 数据仅来自网站 没有 API 或任何东西 有什么方法可以使用 http get 来将整个网站作为原始 HTML 来提取 然后我可以解析它以获取信息吗 Thanks 您可以设置re
  • 在 AS7 中转换查找的 EJB 视图时出现 ClassCastException

    我正在将 2 个 EAR 部署到 JBoss AS 7 1 0 Alpha1 SNAPSHOT 7 0 1 Final 版本之后 两者都部署得很好 我有一个 EJB Singleton 类打包在一个 JAR 中 位于其中一个 EAR 中 S
  • PHP cURL 上传文件到 Node JS 服务器

    我有一个 PHP 前端项目和 Node JS API 我需要将文件发送到 API 但我必须使用 cURL 因为表单发送到 PHP 而 PHP 通过 cURL 发送到 Node JS 我尝试了很多不同的方法 但我无法让它发挥作用 在我正在使用
  • 未显示视图的屏幕截图

    我试图在显示 MyFirstViewController 时截取 MySecondViewController view 的屏幕截图 我不希望 MySecondViewController 随时出现在屏幕上 那可能吗 这是我当前在 MyFi
  • HashMap 分组依据 (Java)

    有没有一种方法可以在Java中按Key分组并将值添加到HashMap中 HashMap
  • 理解这部分手臂的汇编代码

    syntax unified thumb cpu cortex m4 arch armv7e m fpu fpv4 sp d16 Changes from unprivileged to privileged mode thumb func