从C传递参数到64位Linux大会

从C传递参数到64位Linux大会,第1张

概述从C传递参数到64位Linux大会

我试图写我的第一个汇编函数从C程序中调用。 这是.c部分:

#include <stdio.h> extern int sum(int a,int b); int main() { printf("2+3 = %dn",sum(2,3)); return 0; }

和汇编部分:

.text .global sum sum: push %rbp mov %rsp,%rbp mov 8(%rbp),%rax add 12(%rbp),%rax pop %rbp ret

根据一些教程,参数应该存储在%ebp(32位版本)寄存器中。 但是,当我编译上面的代码,我得到这个结果:

2+3 = 4195607

有人能解释我在做什么错吗?

线程信息块在x64下

x86程序集,没有被遵循的小序列号(或者是?)(linux)

linux 64位上下文切换

x86程序参数的位置

如何在汇编中正确调用64位windows API

哦,这里是Makefile:

test: test.o testc.o gcc -o test test.o testc.o test.o: f1.s gcc -o test.o -c f1.s testc.o: f2.c gcc -c -o test.o f2.c

提前感谢您的任何提示!

问候,菲利普

“assembly炼狱”会发生什么?

ASM调用Printf

如何使用节上的fixups属性?

我如何分解原始的MIPS代码?

调用静态链接函数崩溃每次在windows 8/10而不是7

总结

以上是内存溢出为你收集整理的从C传递参数到64位Linux大会全部内容,希望文章能够帮你解决从C传递参数到64位Linux大会所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1280933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存