如何在程序集x86_64(Linux,gas语法)中创建简单的子线程?

如何在程序集x86_64(Linux,gas语法)中创建简单的子线程?,linux,multithreading,assembly,x86-64,system-calls,Linux,Multithreading,Assembly,X86 64,System Calls,如何在第二个线程中移动“compute”函数?请给我一个简单的例子和一些细节如何工作。我试图在网上搜索一些代码示例,但没有结果 .data .balign 16 vectorA: .double 4.0, 4.0 vectorB: .double 2.0, 2.0 .text .globl main, compute main: pushq %rbp movq %rsp, %rbp callq compute xorq %rax, %rax popq %rbp re

如何在第二个线程中移动“compute”函数?请给我一个简单的例子和一些细节如何工作。我试图在网上搜索一些代码示例,但没有结果

.data
.balign 16
vectorA: .double 4.0, 4.0
vectorB: .double 2.0, 2.0

.text
.globl main, compute
main:
  pushq %rbp
  movq %rsp, %rbp
  callq compute
  xorq %rax, %rax
  popq %rbp  
  retq

compute:
  pushq %rbp
  movq %rsp, %rbp
  movapd vectorA(%rip), %xmm0
  movapd vectorB(%rip), %xmm1
  movq $1000000000, %rcx
  lp:
    mulpd %xmm1, %xmm0
    divpd %xmm1, %xmm0
  loop lp
  popq %rbp
  retq

您需要使用
clone
,请参阅。谢谢,希望我能理解nasm语法。相关:关于如何实际使用它以堆栈和函数指针启动另一个线程。