我是编程新手.我知道计算机按照给出的顺序执行指令.
我正在学习C,我写了这个:
#include <stdlib.h>
#include <stdio.h>
int comp(const char *a, const char *b) {
return *a - *b;
}
int main() {
char str[] = "Hello, world! I'm learning C and it's awesome!";
qsort(str, sizeof(str) - 1, sizeof(char), comp); // -1 because of NUL-terminator.
puts(str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我想对多个非常大的数组进行排序时,这可能需要一段时间.我的计算机有多个处理核心,所以我想利用它.那可能吗?代码可以并行运行,我该怎么做?
PS我知道我必须在优化之前对代码进行分析,但是现在假设这是一个非常慢的操作.
我在每次迭代时递减RAX.如果RAX为零,程序应该改变流程.
# AT&T syntax
start_calc_factorial:
decq %rax
cmpq $0, %rax
je quit_calc_factorial
mulq %rcx
jmp start_calc_factorial
Run Code Online (Sandbox Code Playgroud)
但是,该程序永远不会终止.调试器告诉我RAX的值为0xa0257c7238581842(它可能是下溢的,但它不应该因为je指令).RAX的初始值为7.
可能是什么问题呢?