RAM 存储二进制数和汇编语言的冒泡排序

2024-04-15

我必须使用 ARM v7 执行一个例程,在 RAM 内存中存储 10 个二进制数,然后使用冒泡排序对这些数字从高到低进行排序,我应该如何开始?


.func
bubbleSortAscendingU32:
    ldr     r3, [r0], #4
    mov     r1, #9*4
    mov     r12, #9*4
1:
    ldr     r2, [r0], #4
    cmp     r2, r3
    strdlo  r2, r3, [r0, #-8]
    movhi   r3, r2
    subs    r12, r12, #4
    bgt     1b

    sub     r0, r0, r1
    subs    r1, r1, #4
    ldrgt   r3, [r0, #-4]
    movgt   r12, r1
    bgt     1b

    bx      lr
.endfunc

假设我们正在处理一系列uint32_t,上面的方法可能有效。

both strdlo and movhi必须更换为其他类型:

无符号降序:strdhi and movlo

签名升序:strdlt and movgt

降序签名:strdgt and movlt

函数原型:

void bubbleSortAscendingU32(uint32_t *pSrc);

void bubbleSortDescendingU32(uint32_t *pSrc);

void bubbleSortAscendingS32(int32_t *pSrc);

void bubbleSortDescendingS32(int32_t *pSrc);


  • 不要问我细节。我得写半本书来解释。逐步按照说明进行操作,直到您最终了解流程。
  • 你的教授很可能需要相当长的时间才能理解上面的例程。
  • 我怀疑他会相信这是你自己写的。说实话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAM 存储二进制数和汇编语言的冒泡排序 的相关文章

  • 在什么类型的情况下汇编速度不够快,因此您需要直接的硬件/布尔逻辑解决方案?

    我已经开始通读装配艺术 https nostarch com assembly2 htm 其中有一个关于布尔逻辑的部分 其中指出 当然 使用 Pascal C 甚至汇编语言等语言指定编程问题的解决方案比使用布尔方程指定解决方案要容易得多 因
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • printf 内部如何工作? [复制]

    这个问题在这里已经有答案了 可能的重复 无需汇编的 C C 函数定义 https stackoverflow com questions 2442966 c c function definitions without assembly 你
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • 使用乘法执行整数除法[重复]

    这个问题在这里已经有答案了 查看编译器生成的 x86 程序集 我注意到 无符号 整数除法有时会实现为整数乘法 这些优化似乎遵循以下形式 value n gt value 0xFFFFFFFF n 1 0x100000000 例如 除以 9
  • 在 Windows 8/10 上调用静态链接函数每次都会崩溃,但在 Windows 7 上则不然

    问题 我已经建立了https github com reorg pg repack https github com reorg pg repack生成二进制文件的项目 该二进制文件与 postgres 9 6 可再发行组件链接 我使用由
  • 读取和打印手臂组件中的字符串

    我正在使用 ARMSim 刚刚开始学习汇编 所以如果我看起来一无所知 请原谅我 但我正在尝试从输入文件中读取字符串 然后将其打印到输出屏幕 到目前为止我有 equ SWI Open 0x66 open a file equ SWI Clos
  • MIPS 在程序中使用 $s0... 等注册并最终恢复它是否优雅

    我在 MIPS 教程中读到 只有寄存器 s0 s7 在过程调用中被保留 但我认为 也许我错了 创建有副作用的程序并不优雅 我认为程序应该只更改 v0 v1 寄存器和堆栈 如果需要的话 我是对的吗 所以我认为在我的程序中我只能使用 t0 t9
  • 源和目标具有不同的 EABI 版本

    我正在尝试使用 ARM 工具链编译 so 文件 但是我不断收到这个错误 错误 源对象的 EABI 版本为 0 但目标对象的 EABI 版本为 5 我无法更改工具链中的任何内容 因为我必须使用给定的工具链 我以前从未见过这个错误 我使用了这个
  • 在长模式下更改 GDT 并更新 CS

    我正在编写一个简单的自制 64 位操作系统 通过 UEFI 启动它 这意味着当我的代码开始执行时 它已经处于长模式 并且启用了分页 现在 退出 UEFI 引导服务后 我想用我自己的控制结构替换 UEFI 构建的所有控制结构 成功更改 CR3
  • 二进制文件的结构验证

    我正在研究正式指定各种二进制流格式的方法 并使用工具检查流是否符合规范 类似于 XSD 任何 XML 验证工具 或者就像在二进制级别上工作的极其复杂的 grep 表达式 最好不是 这真的很难阅读 有人知道有用的规范 工具吗 理由 我们每天都
  • 将 C 转换为 MIPS - 嵌套数组

    我正在学习 MIPS 汇编语言 在书中看到了这个例子 对我来说这似乎是不正确的 如果是的话 这将不是我在本书中发现的第一个错误 变量f and g被分配寄存器 s0 and s1分别是数组的基地址A and B are s6 and s7分
  • g++ 内联汇编括号中不匹配

    g 向我抱怨以下代码中缺少括号 1 2 3 v v v asm volatile inb 1 0 a result Nd portnumber 1 2 3 正如您所看到的 括号是匹配
  • 如何将png二进制数据放入img标签中并将其显示为图像?

    我正在用这个 ajax type GET url template bump1 purse png datatype image png success function data var reader new FileReader rea
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • 如何将 std::map 输出到二进制文件?

    我怎样才能输出一个std map到二进制文件 地图声明如下所示 map
  • ARM + gcc:不要使用一大块 .rodata 部分

    我想使用 gcc 编译一个程序 并针对 ARM 处理器进行链接时间优化 当我在没有 LTO 的情况下编译时 系统会被编译 当我启用 LTO 时 使用 flto 我收到以下汇编错误 错误 无效的文字常量 池需要更近 环顾网络 我发现这与我系统
  • 如何创建二进制补丁?

    为二进制文件制作补丁的最佳方法是什么 我希望用户能够简单地应用 一个简单的patch应用程序会很好 在文件上运行 diff 只是给出Binary files differ 查看bsdiff and bspatch website http
  • ARM 调用约定是否允许函数不将 LR 存储到堆栈中?

    正如标题所示 我在理解 ARM 架构的调用约定时遇到问题 特别是 我仍然很难知道当你调用子程序时 LR 寄存器会发生什么 我认为 当您进入子程序时 处理 LR 寄存器的最明显 最安全的方法是将其存储到堆栈中 但该行为没有出现在文档中 因此我
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb

随机推荐

  • youtube 视频作为网站背景

    有没有办法将 youtube 视频嵌入到带有 html css 和 javascript 的网页背景中 并将实际网站内容放在顶部 如何 基本上 它应该是一个自动播放 静音的视频 但访问者可以调高音量 并且该网站应该在其之上运行良好 该网站很
  • 来自直播流的语音到文本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 Java 应用程序 我想要转录的不是一个文件 而是一个由 Wowza 提供的实时流 rtmp
  • 如何定位除悬停在 div 上之外的同一类的所有 div?

    我有一组 div 都具有相同的类 如果可以使这更容易 它们不必具有相同的类 理想情况下 我想要的是 当用户将鼠标悬停在这些 div 之一上时 其他 div 每个都有背景图像 全部变成灰色 以将焦点放在当前悬停的 div 上 如果是悬停在上面
  • 在两个或多个窗口之间拖放 QDockWidget

    我想知道是否有人知道是否可以拖动QDockWidget http doc qt nokia com latest qdockwidget html从一个窗口到另一个窗口 我正在开发一个有很多窗口的应用程序 每个窗口都有特定的用途 我想使用
  • 使用 OpenXML 打开点文件

    我需要打开一个 DOT word 文档模板 文件 替换填充符并将其另存为文档文件 打开 DOT 文件时 我收到 文档文件已损坏 是否可以使用 OpenXML 处理 DOT 文件 UPDATE 我正在将 DOT 文件另存为 XML 手动使用
  • 如何在 emacs 中以 info 模式打开 *.info 文件?

    C x C f blah info以基础金属模式打开文件 我用过apropos并发现Info mode我认为这可能会从基本模式更改为信息模式 但这会引发 lisp 错误 如何在 emacs 中打开外部 第三方 info 文件 以便获得与查看
  • 在旋转排序数组中搜索数字

    给定一个可以旋转的排序数组 以最小的时间复杂度在其中找到一个元素 例如 数组内容可以是 8 1 2 3 4 5 假设您在其中搜索 8 该解决方案仍然适用于二分搜索 因为您需要将数组划分为要检查的两个部分 在排序数组中 您只需查看每个部分并确
  • Elm 组件和视图:什么时候应该使用 `Html msg` 以及什么时候应该使用 `Html Msg`

    我正在做一个项目 我和我的队友正在讨论哪种方法更好 在我看来Html msg似乎更通用 所以我认为我们应该尽可能使用它 但除此之外我不能给他其他理由 另外 我来自 React 和 Redux 对我来说看起来像是带有签名的组件Html Msg
  • Angular:在/src/app/app-routing.module.ts中找不到路由声明

    当我尝试为使用以下命令生成的组件添加自动路由时 ng generate module orders route orders module app module 我收到错误 Couldn t find a route declaration
  • HTML2Canvas 不渲染完整的 div,仅渲染屏幕上可见的内容

    我正在尝试使用HTML2画布 https github com niklasvh html2canvas渲染 div 的内容 这是代码 var htmlSource potenzial page 0 btn on click functio
  • Spring Cloud Stream动态通道

    我正在使用 Spring Cloud Stream 想要以编程方式创建和绑定通道 我的用例是 在应用程序启动期间 我收到要订阅的 Kafka 主题的动态列表 如何为每个主题创建一个频道 我最近遇到了类似的场景 下面是我动态创建 Subscr
  • 在 Python 中创建二维非矩形形状的三角形网格

    假设我有一组点定义二维平面中非矩形形状的周长 我需要一个函数来创建三角形网格划分 在其中可以修改三角形单元的数量并返回每个单元的 x y 坐标 谢谢 你可能应该看看 dmsh https github com nschloe dmsh py
  • 解析 JSON 帖子

    我有以下代码 data Friend Friend friend name Text friend inTwitter Bool friend twitterName Maybe Text deriveJSON drop 6 Friend
  • XQuery 中有没有办法获取自某个纪元以来的当前时间(以毫秒为单位)?

    XQuery提供各种date time功能类似于current dateTime 但是我似乎找不到一个能让我有时间的毫秒自纪元以来 提取小时 分钟和秒的函数似乎过于独立存在 获取大纪元时间 即unix时间或类似时间 的正确方法是什么XQue
  • SwiftUI:如何更改 NavigationView 的色调(背景颜色)?

    我有一个带有列表的导航视图 如何更改导航视图的颜色 还没有直接的 api要执行此操作 但您可以查看调试视图层次结构 您将看到它是一个简单的 UINavigationBar 并且所有旧解决方案也可以在这里工作 还 struct Content
  • Laravel 4 级联软删除

    是否有一种模块化方法可以在 L4 中执行级联软删除 我的数据库已经设计为通过硬删除来执行此操作 因为所有表都与另一个表相关 但是 我正在使用软删除 并且真的不想让表超载delete 我的模型中的方法 只是由于 A 模型的数量 以及 B 必须
  • 停止 Visual Studio 2013 中的“在文件中查找”搜索,该搜索将花费很长时间

    我只是在整个解决方案中搜索了某个字符串 该字符串显然存在于许多缩小的 JavaScript 文件中 这会导致 Visual Studio 进程在 查找结果 窗口中输出这些缩小文件的内容时几乎挂起 因为它们的大小高达几兆字节 一旦这个过程开始
  • 等待来自 setter 属性的异步函数

    我需要从属性设置方法等待异步函数 public String testFunc get set Await Call to the async func
  • scala中定义函数,FunctionName和FunctionName(_)的区别

    我尝试使用以下代码在 Scala 中定义递归函数 object Factorial val almostFactorial f Int gt Int gt n Int gt if n 0 1 else n f n 1 val factori
  • RAM 存储二进制数和汇编语言的冒泡排序

    我必须使用 ARM v7 执行一个例程 在 RAM 内存中存储 10 个二进制数 然后使用冒泡排序对这些数字从高到低进行排序 我应该如何开始 func bubbleSortAscendingU32 ldr r3 r0 4 mov r1 9