OpenEuler 中C与汇编的混合编程
2021/12/5 1:16:54
本文主要是介绍OpenEuler 中C与汇编的混合编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- OpenEuler 中C与汇编的混合编程
- 在X86_64架构下实践2.5中的内容,提交代码和实践截图
- 准备工作
- 将C代码编译成汇编代码
- 示例2.2
- 示例2.3
- 示例2.4
- 在X86_64架构下实践2.5中的内容,提交代码和实践截图
OpenEuler 中C与汇编的混合编程
在X86_64架构下实践2.5中的内容,提交代码和实践截图
准备工作
首先,查看ubuntu版本并下载gcc32位库
可见x86-64
将C代码编译成汇编代码
示例2.2
将s.c文件经过预处理、编译成s1.s文件,再将s.s、s1.s文件经过汇编、链接形成可执行文件,最后结果可见
示例2.3
与上面步骤相同。
编译过程中遇到一个问题,在汇编mysum.s文件时如果不加-m32会出现以下错误
经查资料,发现是错误原因是,在64位系统和32位系统中对于某些汇编指令的处理支持不一样造成的。在文件mysum.s中,包含指令:pushl %ebp,该指令在64位系统下就编译不过。
博客中给的解决方法是在.s文件的开头加上.code32,这样汇编确实通过了,但是在执行最后的可执行文件时会发生段错误
这是个治标不治本的方法,直接在gcc的命令中加上-m32则不会出现此问题
如果汇编.s文件加-m32,编译.c文件不加,则会出现以下错误
这是因为两份文件一个是32位一个是64位,无法匹配导致的错误
示例2.4
步骤同上
这篇关于OpenEuler 中C与汇编的混合编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享