研究试验3

0604-研究试验3

学习过程

(1)

image-20200604201716625

image-20200604202304616

(2)

main()
{
    *(char far *)0x0b80009B0 = 0x61;
    *(char far *)0x0b80009B1 = 0x2;
}

(3)

image-20200605124949972

image-20200605125037239

(4)

书上的代码转换为的汇编

image-20200605131126692

image-20200605131157695

(5)

image-20200605132213671

image-20200605132236127

image-20200605132320486

image-20200605132336619

解决的问题

(2)

image-20200605124313108

(3)

  1. 全局变量放在内存中
    1. image-20200605125347415
  2. 局部变量放在栈中
    1. image-20200605125422103
  3. 每个函数开头的 push bp mov bp sp 就是为了在函数中正确的使用局部变量
    1. main程序开始 image-20200605125742479
    2. main程序结束 image-20200605125842195

(4)

  1. 返回值存放在 ax

    //由于书上的代码返回值为0,不好对比。故将 a b 赋值为 1
    int f(void);
    
    int a, b, ab;
    
    main()
    {
        int c;
        c = f();
    }
    
    int f(void)
    {
        a = b = 1;//返回值为2
        ab = a + b;
        return ab;
    }
    
  • image-20200605130645458
  • image-20200605130830428

(5)

void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。

void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

研究体会

本次实验较前两实验略显复杂,需要大量编译链接分析工作,通过本次实验,认识的C语言分配内存的机制
数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

研究体会

本次实验较前两实验略显复杂,需要大量编译链接分析工作,通过本次实验,认识的C语言分配内存的机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值