zoukankan      html  css  js  c++  java
  • 第三章家庭作业

    小组成员:20135310陈巧然 20135305姚歌

    选题:3.56

    分值:2分

    题目:

     

    解题思路及答案:

    A.

    寄存器 变量
    esi    x
    ebx    n
    edi    result
    edx    mask

    B.

    result:0x55555555

    mask:0x80000000

    C.

    mask !=0

    D.

    第十行,逻辑右移了n位

    E.

    第八行,result ^= (mask & x)

    F.

    int loop(int x, int n)

    {
        int result = 0x55555555;
        int mask;
        for(mask = 0x80000000; mask != 0; mask = mask>>n){
            result ^= (mask & x);
        }
        return result;
    }

    选题:3.67

    分值:3分

    题目:

    解题思路及答案:

    A. 
    e1.p: 0
    e1.x: 4
    e2.y: 0
    e2.next: 4

    B.
    总共需要8个字节。

    C.
    不难知道,赋值前后都应该是整数。
    edx就是参数up(一个指针)。
    最后结果是用eax - (edx)得到的,说明(edx)是整数,即up->___ 为整数,肯定是表示的e2.y。
    再看看之前的eax,eax是由(eax)所得,说明到第3行后,eax是个指针。
    它是由(ecx)得到的,说明ecx在第二行也是个指针。
    而ecx是通过*(up+4)得到的,所以ecx是一个union指针next,即up->e2.next;
    到第三行,eax为*(ecx),且是一个指针,所以eax在第三行为int* p,即up->e2.next->e1.p。
    所以,赋值符号后面的表达式就为  *(up->e2.next->e1.p) - up->e2.y

    再看看前面。
    最终赋值的地址是 ecx+4,而ecx那时候是一个next指针,而(next+4)必须是一个int,也不难推测它是e1.x。因此前面就为 up->e2.next->e1.x。
    结果如下:

    void proc(union ele *up)
    {
        up->e2.next->e1.x = *(up->e2.next->e1.p) - up->e2.y;
    }

  • 相关阅读:
    Python面向对象详解
    使用树莓派搭建LoRaWAN网关并接入腾讯云物联网开发平台
    dajngo
    dajngo 项目目录结构调整
    Django
    nacos的简单使用
    MySQL数据库开发规范
    mabatis的sql标签
    直接插入100w数据报错
    大数据量插入到数据库
  • 原文地址:https://www.cnblogs.com/20135305yg/p/4901129.html
Copyright © 2011-2022 走看看