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

    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

  • 相关阅读:
    为什么 PCB 生产时推荐出 Gerber 给工厂?
    Fedora Redhat Centos 有什么区别和关系?
    【KiCad】 如何给元件给元件的管脚加上划线?
    MCU ADC 进入 PD 模式后出现错误的值?
    FastAdmin 生产环境升级注意
    EMC EMI 自行评估记录
    如何让你的 KiCad 在缩放时不眩晕?
    KiCad 5.1.0 正式版终于发布
    一次单片机 SFR 页引发的“事故”
    java基础之集合
  • 原文地址:https://www.cnblogs.com/Ntime/p/4928511.html
Copyright © 2011-2022 走看看