我正在尝试使用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);
}