zxia

@zxia

  • platypus platypus Post #2

    se 的类型是 pair<string, Section>,要获取 Section 字段,需要引用 se.second。此外,sections 是一个无序映射,对给定键,值的类型是 Section。例如 sections["foo"] 是一个 Section 类型。

  • rijin ");drop table;-- Post #2

    如果再 p2 函数中修改了 x 可能会将 y 覆盖掉,因为再第二个框的视角下 x 是 double 的,所以可以在 x 的内存里面放 8B 的数据,但是实际上 x 链接到的是左边的 int x,所以会把后面的 y 覆盖

  • lyinx Post #3

    我也遇到了,需要将写入位置计算中的 textAddr 改成 textOff

    随后,我们需要知道 RelocEntry 指示的需要修改的源代码的位置,这个值由 re.offset 指示。而由于当前 object 在链接成可执行文件时,还包含若干其它.o,所以需要加上 textAddr,才能得到真正需要修改的地址。

    就是这一句话中应该是加上 textOff 而不是 textAddr

    然而为什么 test0 中可以通过?通过 gdb 调试看到,test0 中 textOff 和 textAddr 是相等的,因此可以通过

    image|214x97

    而在 test1 中这两个值并不相等

    image|213x102

    后续 test2 和 test3 不会到写入内存这一步,test4 和 test5 中 textAddr 和 textOff 都相等,使用 textOff 也能通过

    不知道是实验指导中有误还是实验设计有误

  • uika_winwing uika_winwing Post #2

    这种操作会在每次循环中都读取和写入一遍 result 指向的内存,应当创建一个存储在 register 上的 local variable 来保存更新数据,并只在得到最终结果后写入一次来进行优化。