• 家庭作业


    2.66

    题目:创建一个函数leftmost_one(unsigned x),实现将x除最高有效位1外其他位全部置为0的功能,如果最高有效位为0则返回0

    要求:1.遵循位级整数编码规则。

       2.代码中最多只能包含15个算术运算、位运算和逻辑运算。

    思路:1.x001xxxxxx则将其与xx100000想于即可得到所求结果。

       2.若想得到xx100000则可通过或运算将001xxxxx转化为00111111,将其取反后为11000000,右移一位可得01100000

       3.x01100000相与即可得到所求结果00100000

    函数代码:

    运行结果:

       

    2.68

    题目:构建函数int lower_bits(int n)int 变量的低n位置1,其余位置0

    思路:将~0左移n位与-1异或可得结果。

    函数代码:

    运行结果:

    3.64

        A.从word_sum代码的第5~7行从栈中的3个值分别是result的返回地址,s1.p,s2.p。

        原因:从word_sum汇编代码第9行可知第6、7行的代码是从栈中调用s1.p,s2.p。由第11行代码及题目中的提示可知ret $4使栈指针增加8所以第5行代码从栈中调用的是result的返回地址。

        B.栈帧中分配的5个字段分别用于存储以下值,如下图所示。

    原因:从第6,7行可以看出s1.p的位置是%esp+4即-16的位置。从第8,9行可看出s1.v的位置是%esp+8的位置即-12的位置,从第10行可知%esp(-20)为位置为调用word_sum函数的返回地址即&s2。从第13行可知s2.prod的位置为%ebp-8即-8的位置。从第14行可知s2.sum的位置为%esp-4即-4的位置。

        C.向函数传递结构体参数的通用策略:结构体的每一个变量可以看做是单独的参数进行传入。

        D.从函数返回结构体值的通用策略:将返回变量的地址看做第一个参数传入函数。而不是在函数中分配栈空间给一个临时变量,因为%eax存不下一个结构体,所以%eax充当返回变量的指针的角色。、

    3.65

        由结构体str2的C代码和题中汇编代码第一行知4+B=12,所以由数据对齐知,B在栈中被分配的空间为8。

        由str2的C代码知8+4+2B=28,所以由数据对齐知B可以是8或者7。

        再由结构体str1的C代码和题中的汇编代码最后一行知2*A*B=44。

        根据数据对齐的原理可求得A=3,B=7    。

     

     

    6.29

    由练习题6.13图得

    组7中命中的十六进制存储器地址为:

       

    (1101111011100)=0x1BDC

    (1101111011101)=0x1BDD

    (1101111011110)=0x1BDE

    (1101111011111)=0x1BDF

    组5中命中的十六进制存储器地址为:

    (0111000110100)=0x0E34

    (0111000110101)=0x0E35

    (0111000110110)=0x0E36

    (0111000110111)=0x0E37

    组4中命中的十六进制存储器地址为:

    (1100011110000)=0x18F0

    (1100011110001)=0x18F1

    (1100011110010)=0x18F2

    (1100011110011)=0x18F3

    (0000010110000)=0x00B0

    (0000010110001)=0x00B1

    (0000010110010)=0x00B2

    (0000010110011)=0x00B3

    组2中没有命中的存储器地址。

       

    6.30

  • 相关阅读:
    WebAPI下的如何实现参数绑定
    MYSQL主从不同步延迟原理
    mysql的limit经典用法及优化
    ASP.NET MVC中的模型绑定
    使用EF实现数据库的增删改查
    NoSQL数据库技术特性解析之文档数据库
    MySQL 缓存 Query Cache
    Loadrunner test web service which need username and password
    vb写文件时报'Invalid procedure call or argument'
    Shell 笔记
  • 原文地址:https://www.cnblogs.com/Ntime/p/4928511.html
Copyright © 2020-2023  润新知