逆向-beginners之C++多重继承

博客展示了多重继承的 C++ 代码示例,定义了 box、solid_object 和 solid_box 类,实现了相关属性和方法。同时给出了对应代码的汇编代码,包含 main 函数及各成员函数的汇编指令,有助于理解代码底层执行逻辑。

#include <stdio.h>

/*
 * 多重继承
 */

class box
{
    public:
            int width, height, depth;
            box() {}
            box(int width, int height, int depth)
            {
                this->width = width;
                this->height = height;
                this->depth = depth;
            }

            void dump()
            {
                printf("this is box. width=%d, height=%d, depth=%d\n", width, height, depth);
            }

            int get_volume()
            {
                return width * height * depth;
            }
};

class solid_object
{
    public:
            int density;
            solid_object() {}
            solid_object(int density)
            {
                this->density = density;
            }

            int get_density()
            {
                return density;
            }

            void dump()
            {
                printf("this is solid_object. density=%d\n", density);
            }
};

class solid_box : box, solid_object
{
    public:
            solid_box(int width, int height, int depth, int density)
            {
                this->width = width;
                this->height = height;
                this->depth = depth;
                this->density = density;
            }

            void dump()
            {
                printf("this is solid_box. width=%d,height=%d,depth=%d,density=%d\n", width, height, depth, density);
            }

            int get_weight()
            {
                return get_volume() * get_density();
            }
};

int main()
{
    box b(10, 20, 30);
    solid_object so(100);
    solid_box sb (10, 20, 30, 3);

    b.dump();
    so.dump();
    sb.dump();
    printf("%d\n", sb.get_weight());

    return 0;
}

#if 0
/*
 * intel
 */
0000000000001169 <main>:
    1169:    f3 0f 1e fa              endbr64
    116d:    55                       push   %rbp
    116e:    48 89 e5                 mov    %rsp,%rbp
    1171:    48 83 ec 30              sub    $0x30,%rsp
    1175:    64 48 8b 04 25 28 00     mov    %fs:0x28,%rax
    117c:    00 00
    117e:    48 89 45 f8              mov    %rax,-0x8(%rbp)
    1182:    31 c0                    xor    %eax,%eax
    1184:    48 8d 45 d4              lea    -0x2c(%rbp),%rax
    1188:    b9 1e 00 00 00           mov    $0x1e,%ecx
    118d:    ba 14 00 00 00           mov    $0x14,%edx
    1192:    be 0a 00 00 00           mov    $0xa,%esi
    1197:    48 89 c7                 mov    %rax,%rdi
    119a:    e8 a1 00 00 00           callq  1240 <_ZN3boxC1Eiii>
    119f:    48 8d 45 d0              lea    -0x30(%rbp),%rax
    11a3:    be 64 00 00 00           mov    $0x64,%esi
    11a8:    48 89 c7                 mov    %rax,%rdi
    11ab:    e8 38 01 00 00           callq  12e8 <_ZN12solid_objectC1Ei>
    11b0:    48 8d 45 e0              lea    -0x20(%rbp),%rax
    11b4:    41 b8 03 00 00 00        mov    $0x3,%r8d
    11ba:    b9 1e 00 00 00           mov    $0x1e,%ecx
    11bf:    ba 14 00 00 00           mov    $0x14,%edx
    11c4:    be 0a 00 00 00           mov    $0xa,%esi
    11c9:    48 89 c7                 mov    %rax,%rdi
    11cc:    e8 73 01 00 00           callq  1344 <_ZN9solid_boxC1Eiiii>
    11d1:    48 8d 45 d4              lea    -0x2c(%rbp),%rax
    11d5:    48 89 c7                 mov    %rax,%rdi
    11d8:    e8 99 00 00 00           callq  1276 <_ZN3box4dumpEv>
    11dd:    48 8d 45 d0              lea    -0x30(%rbp),%rax
    11e1:    48 89 c7                 mov    %rax,%rdi
    11e4:    e8 2f 01 00 00           callq  1318 <_ZN12solid_object4dumpEv>
    11e9:    48 8d 45 e0              lea    -0x20(%rbp),%rax
    11ed:    48 89 c7                 mov    %rax,%rdi
    11f0:    e8 b3 01 00 00           callq  13a8 <_ZN9solid_box4dumpEv>
    11f5:    48 8d 45 e0              lea    -0x20(%rbp),%rax
    11f9:    48 89 c7                 mov    %rax,%rdi
    11fc:    e8 eb 01 00 00           callq  13ec <_ZN9solid_box10get_weightEv>
    1201:    89 c6                    mov    %eax,%esi
    1203:    48 8d 3d 91 0e 00 00     lea    0xe91(%rip),%rdi        # 209b <_IO_stdin_used+0x9b>
    120a:    b8 00 00 00 00           mov    $0x0,%eax
    120f:    e8 5c fe ff ff           callq  1070 <printf@plt>
    1214:    b8 00 00 00 00           mov    $0x0,%eax
    1219:    48 8b 55 f8              mov    -0x8(%rbp),%rdx
    121d:    64 48 33 14 25 28 00     xor    %fs:0x28,%rdx
    1224:    00 00
    1226:    74 05                    je     122d <main+0xc4>
    1228:    e8 33 fe ff ff           callq  1060 <__stack_chk_fail@plt>
    122d:    c9                       leaveq
    122e:    c3                       retq   
    122f:    90                       nop

0000000000001230 <_ZN3boxC1Ev>:
    1230:    f3 0f 1e fa              endbr64
    1234:    55                       push   %rbp
    1235:    48 89 e5                 mov    %rsp,%rbp
    1238:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    123c:    90                       nop
    123d:    5d                       pop    %rbp
    123e:    c3                       retq   
    123f:    90                       nop

0000000000001240 <_ZN3boxC1Eiii>:
    1240:    f3 0f 1e fa              endbr64
    1244:    55                       push   %rbp
    1245:    48 89 e5                 mov    %rsp,%rbp
    1248:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    124c:    89 75 f4                 mov    %esi,-0xc(%rbp)
    124f:    89 55 f0                 mov    %edx,-0x10(%rbp)
    1252:    89 4d ec                 mov    %ecx,-0x14(%rbp)
    1255:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1259:    8b 55 f4                 mov    -0xc(%rbp),%edx
    125c:    89 10                    mov    %edx,(%rax)
    125e:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1262:    8b 55 f0                 mov    -0x10(%rbp),%edx
    1265:    89 50 04                 mov    %edx,0x4(%rax)
    1268:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    126c:    8b 55 ec                 mov    -0x14(%rbp),%edx
    126f:    89 50 08                 mov    %edx,0x8(%rax)
    1272:    90                       nop
    1273:    5d                       pop    %rbp
    1274:    c3                       retq   
    1275:    90                       nop

0000000000001276 <_ZN3box4dumpEv>:
    1276:    f3 0f 1e fa              endbr64
    127a:    55                       push   %rbp
    127b:    48 89 e5                 mov    %rsp,%rbp
    127e:    48 83 ec 10              sub    $0x10,%rsp
    1282:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    1286:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    128a:    8b 48 08                 mov    0x8(%rax),%ecx
    128d:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1291:    8b 50 04                 mov    0x4(%rax),%edx
    1294:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1298:    8b 00                    mov    (%rax),%eax
    129a:    89 c6                    mov    %eax,%esi
    129c:    48 8d 3d 65 0d 00 00     lea    0xd65(%rip),%rdi        # 2008 <_IO_stdin_used+0x8>
    12a3:    b8 00 00 00 00           mov    $0x0,%eax
    12a8:    e8 c3 fd ff ff           callq  1070 <printf@plt>
    12ad:    90                       nop
    12ae:    c9                       leaveq
    12af:    c3                       retq   

00000000000012b0 <_ZN3box10get_volumeEv>:
    12b0:    f3 0f 1e fa              endbr64
    12b4:    55                       push   %rbp
    12b5:    48 89 e5                 mov    %rsp,%rbp
    12b8:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    12bc:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    12c0:    8b 10                    mov    (%rax),%edx
    12c2:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    12c6:    8b 40 04                 mov    0x4(%rax),%eax
    12c9:    0f af d0                 imul   %eax,%edx
    12cc:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    12d0:    8b 40 08                 mov    0x8(%rax),%eax
    12d3:    0f af c2                 imul   %edx,%eax
    12d6:    5d                       pop    %rbp
    12d7:    c3                       retq   

00000000000012d8 <_ZN12solid_objectC1Ev>:
    12d8:    f3 0f 1e fa              endbr64
    12dc:    55                       push   %rbp
    12dd:    48 89 e5                 mov    %rsp,%rbp
    12e0:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    12e4:    90                       nop
    12e5:    5d                       pop    %rbp
    12e6:    c3                       retq   
    12e7:    90                       nop

00000000000012e8 <_ZN12solid_objectC1Ei>:
    12e8:    f3 0f 1e fa              endbr64
    12ec:    55                       push   %rbp
    12ed:    48 89 e5                 mov    %rsp,%rbp
    12f0:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    12f4:    89 75 f4                 mov    %esi,-0xc(%rbp)
    12f7:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    12fb:    8b 55 f4                 mov    -0xc(%rbp),%edx
    12fe:    89 10                    mov    %edx,(%rax)
    1300:    90                       nop
    1301:    5d                       pop    %rbp
    1302:    c3                       retq   
    1303:    90                       nop

0000000000001304 <_ZN12solid_object11get_densityEv>:
    1304:    f3 0f 1e fa              endbr64
    1308:    55                       push   %rbp
    1309:    48 89 e5                 mov    %rsp,%rbp
    130c:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    1310:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1314:    8b 00                    mov    (%rax),%eax
    1316:    5d                       pop    %rbp
    1317:    c3                       retq   

0000000000001318 <_ZN12solid_object4dumpEv>:
    1318:    f3 0f 1e fa              endbr64
    131c:    55                       push   %rbp
    131d:    48 89 e5                 mov    %rsp,%rbp
    1320:    48 83 ec 10              sub    $0x10,%rsp
    1324:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    1328:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    132c:    8b 00                    mov    (%rax),%eax
    132e:    89 c6                    mov    %eax,%esi
    1330:    48 8d 3d 01 0d 00 00     lea    0xd01(%rip),%rdi        # 2038 <_IO_stdin_used+0x38>
    1337:    b8 00 00 00 00           mov    $0x0,%eax
    133c:    e8 2f fd ff ff           callq  1070 <printf@plt>
    1341:    90                       nop
    1342:    c9                       leaveq
    1343:    c3                       retq   

0000000000001344 <_ZN9solid_boxC1Eiiii>:
    1344:    f3 0f 1e fa              endbr64
    1348:    55                       push   %rbp
    1349:    48 89 e5                 mov    %rsp,%rbp
    134c:    48 83 ec 20              sub    $0x20,%rsp
    1350:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    1354:    89 75 f4                 mov    %esi,-0xc(%rbp)
    1357:    89 55 f0                 mov    %edx,-0x10(%rbp)
    135a:    89 4d ec                 mov    %ecx,-0x14(%rbp)
    135d:    44 89 45 e8              mov    %r8d,-0x18(%rbp)
    1361:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1365:    48 89 c7                 mov    %rax,%rdi
    1368:    e8 c3 fe ff ff           callq  1230 <_ZN3boxC1Ev>
    136d:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1371:    48 83 c0 0c              add    $0xc,%rax
    1375:    48 89 c7                 mov    %rax,%rdi
    1378:    e8 5b ff ff ff           callq  12d8 <_ZN12solid_objectC1Ev>
    137d:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1381:    8b 55 f4                 mov    -0xc(%rbp),%edx
    1384:    89 10                    mov    %edx,(%rax)
    1386:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    138a:    8b 55 f0                 mov    -0x10(%rbp),%edx
    138d:    89 50 04                 mov    %edx,0x4(%rax)
    1390:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    1394:    8b 55 ec                 mov    -0x14(%rbp),%edx
    1397:    89 50 08                 mov    %edx,0x8(%rax)
    139a:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    139e:    8b 55 e8                 mov    -0x18(%rbp),%edx
    13a1:    89 50 0c                 mov    %edx,0xc(%rax)
    13a4:    90                       nop
    13a5:    c9                       leaveq
    13a6:    c3                       retq   
    13a7:    90                       nop

00000000000013a8 <_ZN9solid_box4dumpEv>:
    13a8:    f3 0f 1e fa              endbr64
    13ac:    55                       push   %rbp
    13ad:    48 89 e5                 mov    %rsp,%rbp
    13b0:    48 83 ec 10              sub    $0x10,%rsp
    13b4:    48 89 7d f8              mov    %rdi,-0x8(%rbp)
    13b8:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    13bc:    8b 70 0c                 mov    0xc(%rax),%esi
    13bf:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    13c3:    8b 48 08                 mov    0x8(%rax),%ecx
    13c6:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    13ca:    8b 50 04                 mov    0x4(%rax),%edx
    13cd:    48 8b 45 f8              mov    -0x8(%rbp),%rax
    13d1:    8b 00                    mov    (%rax),%eax
    13d3:    41 89 f0                 mov    %esi,%r8d
    13d6:    89 c6                    mov    %eax,%esi
    13d8:    48 8d 3d 81 0c 00 00     lea    0xc81(%rip),%rdi        # 2060 <_IO_stdin_used+0x60>
    13df:    b8 00 00 00 00           mov    $0x0,%eax
    13e4:    e8 87 fc ff ff           callq  1070 <printf@plt>
    13e9:    90                       nop
    13ea:    c9                       leaveq
    13eb:    c3                       retq   

00000000000013ec <_ZN9solid_box10get_weightEv>:
    13ec:    f3 0f 1e fa              endbr64
    13f0:    55                       push   %rbp
    13f1:    48 89 e5                 mov    %rsp,%rbp
    13f4:    53                       push   %rbx
    13f5:    48 83 ec 18              sub    $0x18,%rsp
    13f9:    48 89 7d e8              mov    %rdi,-0x18(%rbp)
    13fd:    48 8b 45 e8              mov    -0x18(%rbp),%rax
    1401:    48 89 c7                 mov    %rax,%rdi
    1404:    e8 a7 fe ff ff           callq  12b0 <_ZN3box10get_volumeEv>
    1409:    89 c3                    mov    %eax,%ebx
    140b:    48 8b 45 e8              mov    -0x18(%rbp),%rax
    140f:    48 83 c0 0c              add    $0xc,%rax
    1413:    48 89 c7                 mov    %rax,%rdi
    1416:    e8 e9 fe ff ff           callq  1304 <_ZN12solid_object11get_densityEv>
    141b:    0f af c3                 imul   %ebx,%eax
    141e:    48 83 c4 18              add    $0x18,%rsp
    1422:    5b                       pop    %rbx
    1423:    5d                       pop    %rbp
    1424:    c3                       retq   
    1425:    66 2e 0f 1f 84 00 00     nopw   %cs:0x0(%rax,%rax,1)
    142c:    00 00 00
    142f:    90                       nop

/*
 * arm
 */
000000000040062c <main>:
  40062c:    a9bc7bfd     stp    x29, x30, [sp, #-64]!
  400630:    910003fd     mov    x29, sp
  400634:    9100c3a0     add    x0, x29, #0x30
  400638:    528003c3     mov    w3, #0x1e                      // #30
  40063c:    52800282     mov    w2, #0x14                      // #20
  400640:    52800141     mov    w1, #0xa                       // #10
  400644:    9400001e     bl    4006bc <_ZN3boxC1Eiii>
  400648:    9100a3a0     add    x0, x29, #0x28
  40064c:    52800c81     mov    w1, #0x64                      // #100
  400650:    9400004c     bl    400780 <_ZN12solid_objectC1Ei>
  400654:    910063a0     add    x0, x29, #0x18
  400658:    52800064     mov    w4, #0x3                       // #3
  40065c:    528003c3     mov    w3, #0x1e                      // #30
  400660:    52800282     mov    w2, #0x14                      // #20
  400664:    52800141     mov    w1, #0xa                       // #10
  400668:    94000060     bl    4007e8 <_ZN9solid_boxC1Eiiii>
  40066c:    9100c3a0     add    x0, x29, #0x30
  400670:    94000024     bl    400700 <_ZN3box4dumpEv>
  400674:    9100a3a0     add    x0, x29, #0x28
  400678:    94000051     bl    4007bc <_ZN12solid_object4dumpEv>
  40067c:    910063a0     add    x0, x29, #0x18
  400680:    94000075     bl    400854 <_ZN9solid_box4dumpEv>
  400684:    910063a0     add    x0, x29, #0x18
  400688:    94000084     bl    400898 <_ZN9solid_box10get_weightEv>
  40068c:    2a0003e1     mov    w1, w0
  400690:    90000000     adrp    x0, 400000 <_init-0x4b8>
  400694:    91286000     add    x0, x0, #0xa18
  400698:    97ffffa2     bl    400520 <printf@plt>
  40069c:    52800000     mov    w0, #0x0                       // #0
  4006a0:    a8c47bfd     ldp    x29, x30, [sp], #64
  4006a4:    d65f03c0     ret

00000000004006a8 <_ZN3boxC1Ev>:
  4006a8:    d10043ff     sub    sp, sp, #0x10
  4006ac:    f90007e0     str    x0, [sp, #8]
  4006b0:    d503201f     nop
  4006b4:    910043ff     add    sp, sp, #0x10
  4006b8:    d65f03c0     ret

00000000004006bc <_ZN3boxC1Eiii>:
  4006bc:    d10083ff     sub    sp, sp, #0x20
  4006c0:    f9000fe0     str    x0, [sp, #24]
  4006c4:    b90017e1     str    w1, [sp, #20]
  4006c8:    b90013e2     str    w2, [sp, #16]
  4006cc:    b9000fe3     str    w3, [sp, #12]
  4006d0:    f9400fe0     ldr    x0, [sp, #24]
  4006d4:    b94017e1     ldr    w1, [sp, #20]
  4006d8:    b9000001     str    w1, [x0]
  4006dc:    f9400fe0     ldr    x0, [sp, #24]
  4006e0:    b94013e1     ldr    w1, [sp, #16]
  4006e4:    b9000401     str    w1, [x0, #4]
  4006e8:    f9400fe0     ldr    x0, [sp, #24]
  4006ec:    b9400fe1     ldr    w1, [sp, #12]
  4006f0:    b9000801     str    w1, [x0, #8]
  4006f4:    d503201f     nop
  4006f8:    910083ff     add    sp, sp, #0x20
  4006fc:    d65f03c0     ret

0000000000400700 <_ZN3box4dumpEv>:
  400700:    a9be7bfd     stp    x29, x30, [sp, #-32]!
  400704:    910003fd     mov    x29, sp
  400708:    f9000fa0     str    x0, [x29, #24]
  40070c:    f9400fa0     ldr    x0, [x29, #24]
  400710:    b9400001     ldr    w1, [x0]
  400714:    f9400fa0     ldr    x0, [x29, #24]
  400718:    b9400402     ldr    w2, [x0, #4]
  40071c:    f9400fa0     ldr    x0, [x29, #24]
  400720:    b9400803     ldr    w3, [x0, #8]
  400724:    90000000     adrp    x0, 400000 <_init-0x4b8>
  400728:    91260000     add    x0, x0, #0x980
  40072c:    97ffff7d     bl    400520 <printf@plt>
  400730:    d503201f     nop
  400734:    a8c27bfd     ldp    x29, x30, [sp], #32
  400738:    d65f03c0     ret

000000000040073c <_ZN3box10get_volumeEv>:
  40073c:    d10043ff     sub    sp, sp, #0x10
  400740:    f90007e0     str    x0, [sp, #8]
  400744:    f94007e0     ldr    x0, [sp, #8]
  400748:    b9400001     ldr    w1, [x0]
  40074c:    f94007e0     ldr    x0, [sp, #8]
  400750:    b9400400     ldr    w0, [x0, #4]
  400754:    1b007c21     mul    w1, w1, w0
  400758:    f94007e0     ldr    x0, [sp, #8]
  40075c:    b9400800     ldr    w0, [x0, #8]
  400760:    1b007c20     mul    w0, w1, w0
  400764:    910043ff     add    sp, sp, #0x10
  400768:    d65f03c0     ret

000000000040076c <_ZN12solid_objectC1Ev>:
  40076c:    d10043ff     sub    sp, sp, #0x10
  400770:    f90007e0     str    x0, [sp, #8]
  400774:    d503201f     nop
  400778:    910043ff     add    sp, sp, #0x10
  40077c:    d65f03c0     ret

0000000000400780 <_ZN12solid_objectC1Ei>:
  400780:    d10043ff     sub    sp, sp, #0x10
  400784:    f90007e0     str    x0, [sp, #8]
  400788:    b90007e1     str    w1, [sp, #4]
  40078c:    f94007e0     ldr    x0, [sp, #8]
  400790:    b94007e1     ldr    w1, [sp, #4]
  400794:    b9000001     str    w1, [x0]
  400798:    d503201f     nop
  40079c:    910043ff     add    sp, sp, #0x10
  4007a0:    d65f03c0     ret

00000000004007a4 <_ZN12solid_object11get_densityEv>:
  4007a4:    d10043ff     sub    sp, sp, #0x10
  4007a8:    f90007e0     str    x0, [sp, #8]
  4007ac:    f94007e0     ldr    x0, [sp, #8]
  4007b0:    b9400000     ldr    w0, [x0]
  4007b4:    910043ff     add    sp, sp, #0x10
  4007b8:    d65f03c0     ret

00000000004007bc <_ZN12solid_object4dumpEv>:
  4007bc:    a9be7bfd     stp    x29, x30, [sp, #-32]!
  4007c0:    910003fd     mov    x29, sp
  4007c4:    f9000fa0     str    x0, [x29, #24]
  4007c8:    f9400fa0     ldr    x0, [x29, #24]
  4007cc:    b9400001     ldr    w1, [x0]
  4007d0:    90000000     adrp    x0, 400000 <_init-0x4b8>
  4007d4:    9126c000     add    x0, x0, #0x9b0
  4007d8:    97ffff52     bl    400520 <printf@plt>
  4007dc:    d503201f     nop
  4007e0:    a8c27bfd     ldp    x29, x30, [sp], #32
  4007e4:    d65f03c0     ret

00000000004007e8 <_ZN9solid_boxC1Eiiii>:
  4007e8:    a9bd7bfd     stp    x29, x30, [sp, #-48]!
  4007ec:    910003fd     mov    x29, sp
  4007f0:    f90017a0     str    x0, [x29, #40]
  4007f4:    b90027a1     str    w1, [x29, #36]
  4007f8:    b90023a2     str    w2, [x29, #32]
  4007fc:    b9001fa3     str    w3, [x29, #28]
  400800:    b9001ba4     str    w4, [x29, #24]
  400804:    f94017a0     ldr    x0, [x29, #40]
  400808:    97ffffa8     bl    4006a8 <_ZN3boxC1Ev>
  40080c:    f94017a0     ldr    x0, [x29, #40]
  400810:    91003000     add    x0, x0, #0xc
  400814:    97ffffd6     bl    40076c <_ZN12solid_objectC1Ev>
  400818:    f94017a0     ldr    x0, [x29, #40]
  40081c:    b94027a1     ldr    w1, [x29, #36]
  400820:    b9000001     str    w1, [x0]
  400824:    f94017a0     ldr    x0, [x29, #40]
  400828:    b94023a1     ldr    w1, [x29, #32]
  40082c:    b9000401     str    w1, [x0, #4]
  400830:    f94017a0     ldr    x0, [x29, #40]
  400834:    b9401fa1     ldr    w1, [x29, #28]
  400838:    b9000801     str    w1, [x0, #8]
  40083c:    f94017a0     ldr    x0, [x29, #40]
  400840:    b9401ba1     ldr    w1, [x29, #24]
  400844:    b9000c01     str    w1, [x0, #12]
  400848:    d503201f     nop
  40084c:    a8c37bfd     ldp    x29, x30, [sp], #48
  400850:    d65f03c0     ret

0000000000400854 <_ZN9solid_box4dumpEv>:
  400854:    a9be7bfd     stp    x29, x30, [sp, #-32]!
  400858:    910003fd     mov    x29, sp
  40085c:    f9000fa0     str    x0, [x29, #24]
  400860:    f9400fa0     ldr    x0, [x29, #24]
  400864:    b9400001     ldr    w1, [x0]
  400868:    f9400fa0     ldr    x0, [x29, #24]
  40086c:    b9400402     ldr    w2, [x0, #4]
  400870:    f9400fa0     ldr    x0, [x29, #24]
  400874:    b9400803     ldr    w3, [x0, #8]
  400878:    f9400fa0     ldr    x0, [x29, #24]
  40087c:    b9400c04     ldr    w4, [x0, #12]
  400880:    90000000     adrp    x0, 400000 <_init-0x4b8>
  400884:    91276000     add    x0, x0, #0x9d8
  400888:    97ffff26     bl    400520 <printf@plt>
  40088c:    d503201f     nop
  400890:    a8c27bfd     ldp    x29, x30, [sp], #32
  400894:    d65f03c0     ret

0000000000400898 <_ZN9solid_box10get_weightEv>:
  400898:    a9bd7bfd     stp    x29, x30, [sp, #-48]!
  40089c:    910003fd     mov    x29, sp
  4008a0:    f9000bf3     str    x19, [sp, #16]
  4008a4:    f90017a0     str    x0, [x29, #40]
  4008a8:    f94017a0     ldr    x0, [x29, #40]
  4008ac:    97ffffa4     bl    40073c <_ZN3box10get_volumeEv>
  4008b0:    2a0003f3     mov    w19, w0
  4008b4:    f94017a0     ldr    x0, [x29, #40]
  4008b8:    91003000     add    x0, x0, #0xc
  4008bc:    97ffffba     bl    4007a4 <_ZN12solid_object11get_densityEv>
  4008c0:    1b007e60     mul    w0, w19, w0
  4008c4:    f9400bf3     ldr    x19, [sp, #16]
  4008c8:    a8c37bfd     ldp    x29, x30, [sp], #48
  4008cc:    d65f03c0     ret


#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值