在NASM中无法正确计算平方根函数

时间:2018-08-13 02:51:33

标签: c assembly 64-bit nasm x86-64

我正在尝试使用double sqrt(double num)创建平方根函数,其中num是将平方根的数字。假设我在函数中输入了25.25。根据我的计算器,预期输出为5.02493781056。但是,由于某种原因出现了分段错误。该功能仅用于学习目的。我在互联网上浏览时说,我需要返回所返回的内存地址的完整值。这就是我所拥有的。该代码段与nasm -f macho64文件一起在main.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

main.c

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

0 个答案:

没有答案