常见函数的汇编实现

文章目录

      • 一、64 位整数加法
      • 二、求无符号 64 位整数 x 二进制表示中 1 的数量
      • 三、实现C标准库中的 memcpy(用于复制两段不相交的内存)
      • 四、实现C标准库中的 setjmp/longjmp(用于控制流长跳转)

一、64 位整数加法

int64_t asm_add(int64_t a, int64_t b) {
   
  asm("add %1, %0;"
      : "+r"(a)
      : "r"(b)
  );
  return a;
}

二、求无符号 64 位整数 x 二进制表示中 1 的数量

int asm_popcnt(uint64_t x) {
   
  int s = 0;
 
  asm("push %%rbp;"
      "mov %%rsp, %%rbp;"
      "mov %1, -24(%%rbp);

你可能感兴趣的:(C/C++,汇编,c,c++)