2.5 OpenEuler 中C与汇编的混合编程(选做)

任务详情

  1. 在X86_64架构下实践2.5中的内容,提交代码和实践截图
  2. 把2.5的内容在OpenEuler中重新实践一遍,提交相关代码和截图
  3. 实验内容要经过答辩才能得到相应分数

过程

一、在X86_64架构下实现

查看linux虚拟机版本

下载gcc32位库

sudo apt-get install gcc-multilib g++-multilib module-assistant

此时,就可以使用gcc -m32指令编译32位程序了

1、用汇编代码编程

将c代码编译成汇编代码
c代码:

#include<stdio.h>

extern int B();

int A(int x,int y)
{
	int d,e,f;
	d =4; e =5; f=6;
	d=B(d,e);
}

使用指令 gcc -m32 -S 将a.c代码编译成32位的汇编代码
查看编译结果:

2、用汇编语言实现函数

示例2.2

程序的c代码与汇编代码:

编译指令:gcc -m32 s.c s.s -o s

运行结果:

示例2.3

c代码与汇编代码:

编译指令:

gcc -m32 mysum.c mysum.s -o mysum

注意使用该指令时,要在xx.s文件中加入.code32才能正常编译

运行结果:

3、在汇编中调用c函数

示例2.4

c代码与汇编代码:

编译指令gcc -m32 2.4.c 2.4.s -o zjy

运行结果

posted @   20191223张俊怡  阅读(96)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示