【发布时间】:2023-03-09 19:20:01
【问题描述】:
这是对整个带符号字进行排序的第一个代码 (int32_t):
我尝试将其更改为对uint16_t 无符号半字进行排序。我几乎完成了代码,但缺少一些东西。问题是排序,架构是ARM(在ARM模式下,不是Thumb);这是我到目前为止所做的:
sort: STMFD SP!,{R4-R6,LR}
MOV R2,#1 //for (unsigned i = 1;
L1: CMP R2,R1
BHS L4 // i < toSort.size();
MOV R3,R2 // for (unsigned j = i
L2: SUBS R3,R3,#1// - 1; --j)
BLO L3 // j != -1;
ADD R6,R0,R3,LSL #2
LDRH R4,[R6]
LDRH R5,[R6,#2]
CMP R5,R4 // if (toSort[j+1] < toSort[j])
STRHT R4,[R6,#2]
STRHT R5,[R6] // swap(toSort[j], toSort[j+1]);
BLT L2
L3: ADD R2,R2,#1// else break; ++i)
B L1
L4: LDMFD SP!,{R4-R6,PC}
void insertionSort(vector<int>& toSort)
{
for (int i = 1; i < toSort.size(); ++i)
for (int j = i - 1; j >= 0; --j)
if (toSort[j+1] < toSort[j])
swap(toSort[j], toSort[j+1]);
else
break;
} */ This is the code that should be in assembly
【问题讨论】:
-
请勿发布代码图片。相反,edit 您的问题并将您的代码添加为文本。另外,我不知道您为什么从代码中删除了 cmets,但是对于回答您的问题以有未注释的代码绝对没有帮助。
-
酷!这样看起来好多了。你能描述一下缺少什么吗?也许以一些示例输入为例,您期望的输出以及您得到的输出。尽量让它简单。
-
@hedgehoga 您可以通过将条件后缀附加到助记符来使任何指令成为条件指令。例如,将
STRHLT写入store half word if less t 汉。 -
这些链接都没有回答我关于您的问题标题想要表达的问题。对于在他们正在研究的某项搜索结果列表中看到此标题的未来读者来说,这是非常难以理解的。
-
@hedgehoga 如果你有一个旧的汇编程序,menmonic 也可以是
STRLTH。请检查一下。