从C(double),GAS调用ASM x64函数

保险杠678

我在ASM和C中拥有这个非常简单的函数。我想从C代码中调用ASM函数进行两次加倍。我认为ASM的返回值应该存储在XMM0中,但是实际上发生的是我的返回值是从rax提取的,或者如果未设置rax,我将得到1。

C代码:

#include <stdio.h>

int main() {
double a = 3.14;
double b = add(a);
printf("%lf\n", b);

return 0;
}

ASM功能:

.type add, @function

.globl add
add:

#movq $1, %rax
addsd %XMM0, %XMM0

ret

它出什么问题了?欣赏所有提示。

萨米·库莫宁(Sami Kuhmonen)

您尚未告诉编译器函数接受或返回的内容。隐式声明将使其假定为int的返回值。

编译器应对此发出警告。如果不是,请打开警告。

您应该添加

extern double add(double val);

所以编译器知道发生了什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASM x64 scanf printf double,GAS

来自分类Dev

ASM x64 scanf printf double,GAS

来自分类Dev

汇编函数调用x64 VC ++

来自分类Dev

x64 asm如何设置指向_cdecl C函数的函数指针并调用它?

来自分类Dev

x64 asm如何设置指向_cdecl C函数的函数指针并调用它?

来自分类Dev

ASM x64函数指针未返回良好值

来自分类Dev

使用寄存器而不是堆栈从x64汇编中调用C函数

来自分类Dev

调用x64汇编函数后C ++变量重置为0

来自分类Dev

使用寄存器而不是堆栈从x64汇编中调用C函数

来自分类Dev

x64汇编函数(调用/返回vs推/弹出/跳转)

来自分类Dev

x64汇编函数(调用/返回vs推/弹出/跳转)

来自分类Dev

Fortran:在Intel Fortran x64中使用C函数

来自分类Dev

C将值而不是地址传递给汇编函数(x64)

来自分类Dev

x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

来自分类Dev

C / C ++在x86应用程序中使用x64结构参数导入WinAPI函数

来自分类Dev

vc140 x64项目缺少c ++ libgen.h(mingw)-帮助器函数

来自分类Dev

循环浏览并在x64 ASM中打印argv []

来自分类Dev

为什么在x64中忽略__stdcall调用约定?

来自分类Dev

在 X64 gcc 内联汇编中调用 scanf

来自分类Dev

C中的x64内联汇编以对齐指令

来自分类Dev

C ++ Qt 5.3.1 x64睡眠功能崩溃

来自分类Dev

从C#调用x64 C ++ DLL,进程挂起(更新)

来自分类Dev

C 调用 ASM (YASM x86)

来自分类Dev

acos(double) 在 x64 和 x32 Visual Studio 上给出不同的结果

来自分类Dev

从x86 Powershell调用x64 Powershell SQL管理单元

来自分类Dev

x64 asm:将负值从寄存器移动到内存

来自分类Dev

如何使用C#在x64或x86中运行PowerShell?

来自分类Dev

COM服务器C#(在x64应用中使用x86 dll)

来自分类Dev

我是否需要x64和x86版本的C ++ redist

Related 相关文章

  1. 1

    ASM x64 scanf printf double,GAS

  2. 2

    ASM x64 scanf printf double,GAS

  3. 3

    汇编函数调用x64 VC ++

  4. 4

    x64 asm如何设置指向_cdecl C函数的函数指针并调用它?

  5. 5

    x64 asm如何设置指向_cdecl C函数的函数指针并调用它?

  6. 6

    ASM x64函数指针未返回良好值

  7. 7

    使用寄存器而不是堆栈从x64汇编中调用C函数

  8. 8

    调用x64汇编函数后C ++变量重置为0

  9. 9

    使用寄存器而不是堆栈从x64汇编中调用C函数

  10. 10

    x64汇编函数(调用/返回vs推/弹出/跳转)

  11. 11

    x64汇编函数(调用/返回vs推/弹出/跳转)

  12. 12

    Fortran:在Intel Fortran x64中使用C函数

  13. 13

    C将值而不是地址传递给汇编函数(x64)

  14. 14

    x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

  15. 15

    C / C ++在x86应用程序中使用x64结构参数导入WinAPI函数

  16. 16

    vc140 x64项目缺少c ++ libgen.h(mingw)-帮助器函数

  17. 17

    循环浏览并在x64 ASM中打印argv []

  18. 18

    为什么在x64中忽略__stdcall调用约定?

  19. 19

    在 X64 gcc 内联汇编中调用 scanf

  20. 20

    C中的x64内联汇编以对齐指令

  21. 21

    C ++ Qt 5.3.1 x64睡眠功能崩溃

  22. 22

    从C#调用x64 C ++ DLL,进程挂起(更新)

  23. 23

    C 调用 ASM (YASM x86)

  24. 24

    acos(double) 在 x64 和 x32 Visual Studio 上给出不同的结果

  25. 25

    从x86 Powershell调用x64 Powershell SQL管理单元

  26. 26

    x64 asm:将负值从寄存器移动到内存

  27. 27

    如何使用C#在x64或x86中运行PowerShell?

  28. 28

    COM服务器C#(在x64应用中使用x86 dll)

  29. 29

    我是否需要x64和x86版本的C ++ redist

热门标签

归档