ARM SIMD instruction -- fcmpe

FCMPE

       Floating-point signaling Compare (scalar). This instruction compares the two SIMD&FP source register values, or the first SIMD&FP source register value and zero. It writes the result to the PSTATE.{N, Z, C, V} flags.

       浮点数比较(标量)。此指令比较两个SIMD&FP源寄存器值,或第一个SIMD&FP源寄存器的值和零。它将结果写入PSTATE。{N、Z、C、V}个标志。

  402894:    9e620009     scvtf    d9, x0
        double sc_clk_tck = sysconf(_SC_CLK_TCK);

  402898:    1e602138     fcmpe    d9, #0.0
  40289c:    5400012c     b.gt    4028c0    // gt : 有符号数大于 >
  4028a0:    f94007e0     ldr    x0, [sp, #8]        // x0=[0x419a80]=0x4194d0
  4028a4:    f00000a1     adrp    x1, 419000
  4028a8:    528081c2     mov    w2, #0x40e                     // #1038
  4028ac:    9114c021     add    x1, x1, #0x530      // x1=0x419530="src/pstree.c"
  4028b0:    910bc003     add    x3, x0, #0x2f0      // x3=0x4194d0+0x2f0=0x4197c0="s %*s %*s %*s %*s %*s %*s %*s %*s %Lu"
  4028b4:    f00000a0     adrp    x0, 419000
  4028b8:    911fa000     add    x0, x0, #0x7e8      // x0=0x4197e8="sc_clk_tck > 0"
  4028bc:    97fffd69     bl    401e60 <__assert_fail@plt>
        assert(sc_clk_tck > 0);

  4028c0:    aa1903e1     mov    x1, x25             // x1=x25=0x421e28="r"
  4028c4:    f00000a0     adrp    x0, 419000
  4028c8:    911fe000     add    x0, x0, #0x7f8      // x0=0x4197f8="/proc/uptime"
  4028cc:    97fffca5     bl    401b60
  4028d0:    aa0003e3     mov    x3, x0
  4028d4:    b4002a80     cbz    x0, 402e24    // exit(1);
        if (!(file = fopen("/proc/uptime", "r"))) {
            // cbz 402e24
            printf("error opening uptime file.\n");
            exit(1);
        }

(gdb) p/d $d9
$8 = {f = 100, u = 4636737291354636288, s = 4636737291354636288}
(gdb) p/x $d9
$9 = {f = 0x64, u = 0x4059000000000000, s = 0x4059000000000000}
(gdb) p/f $d9
$10 = {f = 100, u = 100, s = 100}
(gdb) x/i $pc
=> 0x402898:    fcmpe   d9, #0.0
(gdb) n
0x000000000040289c in ?? ()
=> 0x000000000040289c:  2c 01 00 54     b.gt    0x4028c0
(gdb)
0x00000000004028c0 in ?? ()
=> 0x00000000004028c0:  e1 03 19 aa     mov     x1, x25
(gdb)
0x00000000004028c4 in ?? ()
=> 0x00000000004028c4:  a0 00 00 f0     adrp    x0, 0x419000
(gdb)

你可能感兴趣的:(Assembly,汇编)