第七章报告

在这个例子里,全局符号main是一个位于.text节中偏移量为4的41字节函数。全局符号foo是一个位于.text节中偏移量为0的4字节目标

int time;
int foo(int a) {
int b = a + 1;
return b;
}
int main(int argc,
char* argv[]) {
printf("%d\n", foo(5));
return 0;
在这里插入图片描述
反编译得
在这里插入图片描述而在这个例子里,全局函数main与array的偏移量均为0,
main位于.text节中,而array位于.data节中
main.c
int sum(int *a, int n);
int array[2] = {1, 2};
int main(int argc,char **argv){
int val = sum(array, 2);
return val;
}

sum.c
int sum(int *a, int n){
int i, s = 0;
for (i = 0; i < n; i++) {
s += a[i];
}
return s;
}

在这里插入图片描述
反编译得在这里插入图片描述
在上面两段反编译的代码中,我发现,在main.o里的第’10’行会空一行,而在symbol.o中却不会出现这种空行。由于我也是个小白,出现空行的原因大概是因为main.o调用了函数的原因。

ps:关于怎么在windows和linux中传输文件,可能是由于我使用的linux是虚拟机而不是双系统的缘故,我的linux中mnt下是空目录,没有向下的分支。百度之后发现推荐使用xshell互传文件,可是我怎么也连不上虚拟机,因为我在启动虚拟机的ssh服务时,惊讶的发现百度得来的start 命令已经不适用与这个版本了,导致我无法启动虚拟机的ssh服务,再者我费九牛二虎之力也无法更改虚拟机的ip地址,百度得到的方法都不适用。最后还是只得靠邮箱来传递文件,心累。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值