c - 在 NASM 中无法正确计算平方根函数
问题描述
我正在尝试创建一个平方根函数,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
主程序
int main(void)
{
printf("my square function return: %f", sqrt(25));
return (0);
}
解决方案
推荐阅读
- google-app-maker - 如何在应用程序制造商的 SuggestBox 中过滤选项
- redis - 如何在环回上设置redis
- gurobi - 控制台在次优终止后仍在运行
- c# - 如何连接多个列表值并生成唯一名称
- arrays - 尝试遍历数组范围内的单元格时,VBA 获得“需要对象”
- python - 从 finally 子句抛出异常
- javascript - 使用 AFrame 和 ARJs 我想在标记上增强图像。当我单击或触摸(桌面和移动)图像时,它应该导航到一个 URL
- cypress - 如何在一个会话中测试两个网站
- c# - 我可以为 IEnumerable.Any 方法动态添加参数到 LINQ 查询吗?
- kubernetes - 带有 GKE 内部负载均衡器的 DNS