RAM 存储二进制数和汇编语言的冒泡排序
RAM store binary numbers and bubble sort in assembly language
我必须使用 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
的数组,上面的方法可能有效。
strdlo
和 movhi
都必须替换为其他类型:
无符号降序:
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);
- 不要问我细节。我不得不写半本书来解释。按照说明逐步进行,直到您最终理解流程。
- 您的教授很可能需要相当长的时间才能理解上述例程。
- 我怀疑他会相信这是你自己写的。说实话。
我必须使用 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
的数组,上面的方法可能有效。
strdlo
和 movhi
都必须替换为其他类型:
无符号降序:
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);
- 不要问我细节。我不得不写半本书来解释。按照说明逐步进行,直到您最终理解流程。
- 您的教授很可能需要相当长的时间才能理解上述例程。
- 我怀疑他会相信这是你自己写的。说实话。