小编Dut*_*man的帖子

我可以同时执行两个功能吗?

我是编程新手.我知道计算机按照给出的顺序执行指令.

我正在学习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我知道我必须在优化之前对代码进行分析,但是现在假设这是一个非常慢的操作.

c parallel-processing performance

5
推荐指数
1
解决办法
500
查看次数

使用cmpq和je时无限循环

我在每次迭代时递减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.

可能是什么问题呢?

assembly x86-64 cmp decrement

3
推荐指数
1
解决办法
808
查看次数

标签 统计

assembly ×1

c ×1

cmp ×1

decrement ×1

parallel-processing ×1

performance ×1

x86-64 ×1