a.c
#include <stdio.h>
extern int share;
int main(void)
{
int a=100;
swap(&a,&share);
}
b.c
int share=1;
void swap(int *a,int *b)
{
*a^=*b^=*a^=*b;
}
编译
#gcc -c a.c b.c
链接
#ld a.o b.o -e main -o ab
查看
#objdump -h 文件

VMA即虚拟地址
size即大小
file off即偏移量
.text段被分配到地址0x08048094 大小0x62字节
.data段被分配到地址0x080490f8 大小0x4字节
0x27+0x3A=0x61
0+4=4
size查看大小

参考《程序员的自我修养—链接、装载与库》--第四章 静态链接

本文详细介绍了C语言中内存交换技术的应用,通过两个源文件`a.c`和`b.c`展示如何实现内存变量之间的值交换。通过编译、链接和查看汇编代码,深入理解内存操作和静态链接过程。
1618

被折叠的 条评论
为什么被折叠?



