首页 > 解决方案 > 在 NASM 中无法正确计算平方根函数

问题描述

我正在尝试创建一个平方根函数,double sqrt(double num)其中 num 是要平方根的数字。假设我在函数中输入了 25.25。预期的输出将5.02493781056根据我的计算器。但是,不知何故出现了分段错误。该功能纯粹用于学习目的。我在互联网上浏览说我需要返回我要返回的内存地址的完整值。这就是我所拥有的。代码片段nasm -f macho64main.c文件一起运行。

sqrt.s

section .text
global _sqrt

; double sqrt(double num);
_sqrt:
    fld     qword [rdi]     ; read the number given
    fsqrt                   ; float square root instruction
    fst     qword [rax]     ; float store value to rax
    ret                     ; and return it's value

主程序

int main(void)
{
  printf("my square function return: %f", sqrt(25));
  return (0);
}

标签: cassembly64-bitnasmx86-64

解决方案


推荐阅读