问题描述
我必须使用ARM v7进行例程,该例程将10个二进制数字存储在RAM内存中,然后使用冒泡排序将这些数字从高到低排序,我应该如何开始?
I have to do a routine using ARM v7 that store in RAM memory 10 binary numbers and then sort these numbers from high to low using bubble sort, how should I start?
推荐答案
.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
的数组,那么上面的方法可能会起作用.
Assuming we are dealing with an array of uint32_t
, that above might work.
strdlo
和 movhi
都必须替换为其他类型:
both strdlo
and movhi
have to be replaced for other types:
无符号降序: strdhi
和 movlo
签名升序: strdlt
和 movgt
签名降序: strdgt
和 movlt
函数原型:
void bubbleSortAscendingU32(uint32_t * pSrc);
void bubbleSortDescendingU32(uint32_t * pSrc);
void bubbleSortAscendingS32(int32_t * pSrc);
void bubbleSortDescendingS32(int32_t * pSrc);
- 不要问我详细信息.我得写半本书来解释.逐步按照说明进行操作,直到您最终了解流程为止.
- 您的教授很可能需要相当长的时间才能理解上面的例程.
- 我怀疑他会相信你自己写的.说实话.
这篇关于RAM以汇编语言存储二进制数和冒泡排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!