首页 > 技术文章 > 2.5 OpenEuler 中C与汇编的混合编程(选做)

zzjjyy123 2021-11-29 17:43 原文

任务详情

  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

运行结果

推荐阅读