一、早期处理器

由于早期处理器硬件压根没有浮点运算功能, 所以编译器自然不会编译出对应指令, 但是确实有需要的场景, 无论应用程序还是内核驱动, 所有出现了浮点模拟器,具体配置在:

原理很简单, 就是编译器对浮点运算代码还是编译对应“指令”, 当运行时ARM指令集没有该“指令”从而导致指令异常, 然后在异常处理函数中调用浮点模拟器函数计算该“指令”并返回结果

优点不言而喻是能够支持浮点需求场景, 对应用程序还是驱动都透明;缺点也显而易见, 这种“指令异常” 方式会增加系统无效负载, 影响中断响应时间等。

Linus Torvalds认为内核不应该进行浮点运算, 所以后来的内核版本menuconfig我没看到有这个浮点模拟器, 相比于内核应用程序使用到浮点运算需求更大, 总不能“躺枪”也不能用吧?

所以就出现了个软浮点库, 编译器在编译应用程序发现这是一条浮点运算时会用函数进行替代! 比如上面ln()函数的x = (a-1)/(a+1); 减法 加法 最后相除都调用函数解决!

x = (a-1)/(a+1);
反汇编如下:84c8:       e3a0300f        mov     r3, #1584cc:       e50b3020        str     r3, [fp, #-32]  ; 0xffffffe084d0:       e14b03dc        ldrd    r0, [fp, #-60]  ; 0xffffffc484d4:       e3a02000        mov     r2, #084d8:       e3a035ff        mov     r3, #1069547520 ; 0x3fc0000084dc:       e2833603        add     r3, r3, #3145728        ; 0x30000084e0:       eb000188        bl      8b08 <__aeabi_dsub>84e4:       e1a02000        mov     r2, r084e8:       e1a03001        mov     r3, r184ec:       e1a04002        mov     r4, r284f0:       e1a05003        mov     r5, r384f4:       e14b03dc        ldrd    r0, [fp, #-60]  ; 0xffffffc484f8:       e3a02000        mov     r2, #084fc:       e3a035ff        mov     r3, #1069547520 ; 0x3fc000008500:       e2833603        add     r3, r3, #3145728        ; 0x3000008504:       eb000180        bl      8b0c <__adddf3>8508:       e1a02000        mov     r2, r0850c:       e1a03001        mov     r3, r18510:       e1a00004        mov     r0, r48514:       e1a01005        mov     r1, r58518:       eb000301        bl      9124 <__aeabi_ddiv>

这很好理解, 毕竟应用使用浮点频率较高, 靠浮点模拟器总产生异常应用态切成内核态处理完再返回用户态, 太耗性能了。

【文章福利】小编推荐自己的Linux内核技术交流群:【977878001】整理一些个人觉得比较好得学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!前100进群领取,额外赠送一份价值699的内核资料包(含视频教程、电子书、实战项目及代码)

内核资料直通车:Linux内核源码技术学习路线+视频教程代码资料

学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈

二、现代处理器

现代处理器硬件已经支持浮点运算, 而且作为一个组件对待, 可选配, 根据需求和方案选型处理器时评估是否需要硬件支持。在STM系列浮点硬件单元叫做FPU(float process unit)吧,

ARM中归属协处理器那边的。所以我们知道如果要使用硬件浮点的话, 需要满足三个条件:

. 硬件要有浮点运算单元

. 软件要配置使能硬件浮点,比如Linux内核要选中下面配置(主要设置协处理器)

. 编译器指定-mfloat-abi=softfp 或-mfloat-abi=hard 编译浮点指令而不是用函数替换!

同样是上面ln()函数的x = (a-1)/(a+1); 采用了硬浮点指令后反汇编代码如下:

x = (a-1)/(a+1);
反汇编如下:84b0:    ed1b6b0d     vldr    d6, [fp, #-52]    ; 0xffffffcc84b4:    ed9f7b33     vldr    d7, [pc, #204]    ; 8588 <ln+0xf0>84b8:    ee365b47     vsub.f64    d5, d6, d784bc:    ed1b6b0d     vldr    d6, [fp, #-52]    ; 0xffffffcc84c0:    ed9f7b30     vldr    d7, [pc, #192]    ; 8588 <ln+0xf0>84c4:    ee366b07     vadd.f64    d6, d6, d784c8:    ee857b06     vdiv.f64    d7, d5, d6

三、示例代码

我们分别写个应用程序和驱动程序, 且分别用软浮点和硬浮点测试其性能

1.应用程序

代码如下:

/* arm-none-linux-gnueabi-gcc -mfloat-abi=soft application_test.c -lrt -o soft.bin* arm-none-linux-gnueabi-gcc -mfloat-abi=softfp application_test.c -lrt -o softfp.bin* arm-none-linux-gnueabi-gcc -mfloat-abi=hard application_test.c -lrt  fail!!*/
#include<stdio.h>
#include<time.h>double ln(double a)
{int N = 15;int k,nk;double x,xx,y;x = (a-1)/(a+1);xx = x*x;nk = 2*N+1;y = 1.0/nk;for(k=N;k>0;k--) {nk = nk - 2;y = 1.0/nk+xx*y;}return 2.0*x*y;
}int main()
{int t1;double Rt, Vadc;struct timespec time_start={0, 0},time_end={0, 0};clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_start);/* 根据采样电压反推热敏电阻的温度 */for(Vadc=1; Vadc<1800; Vadc++) {Rt = Vadc * 47000 / (1800-Vadc);t1=1/(ln(Rt/10000)/3950+1/298.15)-273.15;}clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time_end);printf("start time %ld s,%ld ns\n", time_start.tv_sec, time_start.tv_nsec);printf("end   time %ld s,%ld ns\n", time_end.tv_sec, time_end.tv_nsec);printf("duration:%ld s %ld ns\n", time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);printf("%.10fmv = %d\n", Vadc, t1);return 0;
}

反汇编可以看出硬浮点直接指令, 软浮点是用函数替换而且是静态链接, 导致bin文件比较大

/* arm-none-linux-gnueabi-objdump -d soft.bin > objdump_soft.txt */
soft.bin:     file format elf32-littlearmDisassembly of section .init:00008388 <_init>:8388:    e92d4008     push    {r3, lr}838c:    eb000024     bl    8424 <call_gmon_start>8390:    e8bd8008     pop    {r3, pc}Disassembly of section .plt:00008394 <.plt>:8394:    e52de004     push    {lr}        ; (str lr, [sp, #-4]!)8398:    e59fe004     ldr    lr, [pc, #4]    ; 83a4 <_init+0x1c>839c:    e08fe00e     add    lr, pc, lr83a0:    e5bef008     ldr    pc, [lr, #8]!83a4:    00009168     .word    0x0000916883a8:    e28fc600     add    ip, pc, #0, 1283ac:    e28cca09     add    ip, ip, #36864    ; 0x900083b0:    e5bcf168     ldr    pc, [ip, #360]!    ; 0x16883b4:    e28fc600     add    ip, pc, #0, 1283b8:    e28cca09     add    ip, ip, #36864    ; 0x900083bc:    e5bcf160     ldr    pc, [ip, #352]!    ; 0x16083c0:    e28fc600     add    ip, pc, #0, 1283c4:    e28cca09     add    ip, ip, #36864    ; 0x900083c8:    e5bcf158     ldr    pc, [ip, #344]!    ; 0x15883cc:    e28fc600     add    ip, pc, #0, 1283d0:    e28cca09     add    ip, ip, #36864    ; 0x900083d4:    e5bcf150     ldr    pc, [ip, #336]!    ; 0x15083d8:    e28fc600     add    ip, pc, #0, 1283dc:    e28cca09     add    ip, ip, #36864    ; 0x900083e0:    e5bcf148     ldr    pc, [ip, #328]!    ; 0x148Disassembly of section .text:000083e8 <_start>:83e8:    e3a0b000     mov    fp, #083ec:    e3a0e000     mov    lr, #083f0:    e49d1004     pop    {r1}        ; (ldr r1, [sp], #4)83f4:    e1a0200d     mov    r2, sp83f8:    e52d2004     push    {r2}        ; (str r2, [sp, #-4]!)83fc:    e52d0004     push    {r0}        ; (str r0, [sp, #-4]!)8400:    e59fc010     ldr    ip, [pc, #16]    ; 8418 <_start+0x30>8404:    e52dc004     push    {ip}        ; (str ip, [sp, #-4]!)8408:    e59f000c     ldr    r0, [pc, #12]    ; 841c <_start+0x34>840c:    e59f300c     ldr    r3, [pc, #12]    ; 8420 <_start+0x38>8410:    ebffffe7     bl    83b4 <_init+0x2c>8414:    ebffffef     bl    83d8 <_init+0x50>8418:    00009328     .word    0x00009328841c:    00008628     .word    0x000086288420:    00009260     .word    0x0000926000008424 <call_gmon_start>:8424:    e59f0014     ldr    r0, [pc, #20]    ; 8440 <call_gmon_start+0x1c>8428:    e59f2014     ldr    r2, [pc, #20]    ; 8444 <call_gmon_start+0x20>842c:    e08f3000     add    r3, pc, r08430:    e7933002     ldr    r3, [r3, r2]8434:    e3530000     cmp    r3, #08438:    012fff1e     bxeq    lr843c:    eaffffdf     b    83c0 <_init+0x38>8440:    000090d8     .word    0x000090d88444:    00000020     .word    0x0000002000008448 <__do_global_dtors_aux>:8448:    e59f3010     ldr    r3, [pc, #16]    ; 8460 <__do_global_dtors_aux+0x18>844c:    e5d32000     ldrb    r2, [r3]8450:    e3520000     cmp    r2, #08454:    03a02001     moveq    r2, #18458:    05c32000     strbeq    r2, [r3]845c:    e12fff1e     bx    lr8460:    00011538     .word    0x0001153800008464 <frame_dummy>:8464:    e59f0020     ldr    r0, [pc, #32]    ; 848c <frame_dummy+0x28>8468:    e92d4008     push    {r3, lr}846c:    e5903000     ldr    r3, [r0]8470:    e3530000     cmp    r3, #08474:    08bd8008     popeq    {r3, pc}8478:    e59f3010     ldr    r3, [pc, #16]    ; 8490 <frame_dummy+0x2c>847c:    e3530000     cmp    r3, #08480:    08bd8008     popeq    {r3, pc}8484:    e12fff33     blx    r38488:    e8bd8008     pop    {r3, pc}848c:    00011410     .word    0x00011410...00008498 <ln>:8498:    e92d4830     push    {r4, r5, fp, lr}849c:    e28db00c     add    fp, sp, #1284a0:    e24dd030     sub    sp, sp, #48    ; 0x3084a4:    e14b03fc     strd    r0, [fp, #-60]    ; 0xffffffc484a8:    e3a0300f     mov    r3, #1584ac:    e50b3020     str    r3, [fp, #-32]    ; 0xffffffe084b0:    e14b03dc     ldrd    r0, [fp, #-60]    ; 0xffffffc484b4:    e3a02000     mov    r2, #084b8:    e3a035ff     mov    r3, #1069547520    ; 0x3fc0000084bc:    e2833603     add    r3, r3, #3145728    ; 0x30000084c0:    eb0000fc     bl    88b8 <__aeabi_dsub>84c4:    e1a02000     mov    r2, r084c8:    e1a03001     mov    r3, r184cc:    e1a04002     mov    r4, r284d0:    e1a05003     mov    r5, r384d4:    e14b03dc     ldrd    r0, [fp, #-60]    ; 0xffffffc484d8:    e3a02000     mov    r2, #084dc:    e3a035ff     mov    r3, #1069547520    ; 0x3fc0000084e0:    e2833603     add    r3, r3, #3145728    ; 0x30000084e4:    eb0000f4     bl    88bc <__adddf3>84e8:    e1a02000     mov    r2, r084ec:    e1a03001     mov    r3, r184f0:    e1a00004     mov    r0, r484f4:    e1a01005     mov    r1, r584f8:    eb000275     bl    8ed4 <__aeabi_ddiv>84fc:    e1a02000     mov    r2, r08500:    e1a03001     mov    r3, r18504:    e14b22fc     strd    r2, [fp, #-44]    ; 0xffffffd48508:    e14b02dc     ldrd    r0, [fp, #-44]    ; 0xffffffd4850c:    e14b22dc     ldrd    r2, [fp, #-44]    ; 0xffffffd48510:    eb0001d4     bl    8c68 <__aeabi_dmul>8514:    e1a02000     mov    r2, r08518:    e1a03001     mov    r3, r1851c:    e14b23f4     strd    r2, [fp, #-52]    ; 0xffffffcc8520:    e51b3020     ldr    r3, [fp, #-32]    ; 0xffffffe08524:    e1a03083     lsl    r3, r3, #18528:    e2833001     add    r3, r3, #1852c:    e50b3014     str    r3, [fp, #-20]    ; 0xffffffec8530:    e51b0014     ldr    r0, [fp, #-20]    ; 0xffffffec8534:    eb000194     bl    8b8c <__aeabi_i2d>8538:    e1a02000     mov    r2, r0853c:    e1a03001     mov    r3, r18540:    e3a00000     mov    r0, #08544:    e3a015ff     mov    r1, #1069547520    ; 0x3fc000008548:    e2811603     add    r1, r1, #3145728    ; 0x300000854c:    eb000260     bl    8ed4 <__aeabi_ddiv>8550:    e1a02000     mov    r2, r08554:    e1a03001     mov    r3, r18558:    e14b21fc     strd    r2, [fp, #-28]    ; 0xffffffe4855c:    e51b3020     ldr    r3, [fp, #-32]    ; 0xffffffe08560:    e50b3010     str    r3, [fp, #-16]8564:    ea00001c     b    85dc <ln+0x144>8568:    e51b3014     ldr    r3, [fp, #-20]    ; 0xffffffec856c:    e2433002     sub    r3, r3, #28570:    e50b3014     str    r3, [fp, #-20]    ; 0xffffffec8574:    e51b0014     ldr    r0, [fp, #-20]    ; 0xffffffec8578:    eb000183     bl    8b8c <__aeabi_i2d>857c:    e1a02000     mov    r2, r08580:    e1a03001     mov    r3, r18584:    e3a00000     mov    r0, #08588:    e3a015ff     mov    r1, #1069547520    ; 0x3fc00000858c:    e2811603     add    r1, r1, #3145728    ; 0x3000008590:    eb00024f     bl    8ed4 <__aeabi_ddiv>8594:    e1a02000     mov    r2, r08598:    e1a03001     mov    r3, r1859c:    e1a04002     mov    r4, r285a0:    e1a05003     mov    r5, r385a4:    e14b03d4     ldrd    r0, [fp, #-52]    ; 0xffffffcc85a8:    e14b21dc     ldrd    r2, [fp, #-28]    ; 0xffffffe485ac:    eb0001ad     bl    8c68 <__aeabi_dmul>85b0:    e1a02000     mov    r2, r085b4:    e1a03001     mov    r3, r185b8:    e1a00004     mov    r0, r485bc:    e1a01005     mov    r1, r585c0:    eb0000bd     bl    88bc <__adddf3>85c4:    e1a02000     mov    r2, r085c8:    e1a03001     mov    r3, r185cc:    e14b21fc     strd    r2, [fp, #-28]    ; 0xffffffe485d0:    e51b3010     ldr    r3, [fp, #-16]85d4:    e2433001     sub    r3, r3, #185d8:    e50b3010     str    r3, [fp, #-16]85dc:    e51b3010     ldr    r3, [fp, #-16]85e0:    e3530000     cmp    r3, #085e4:    caffffdf     bgt    8568 <ln+0xd0>85e8:    e14b22dc     ldrd    r2, [fp, #-44]    ; 0xffffffd485ec:    e1a00002     mov    r0, r285f0:    e1a01003     mov    r1, r385f4:    eb0000b0     bl    88bc <__adddf3>85f8:    e1a02000     mov    r2, r085fc:    e1a03001     mov    r3, r18600:    e1a00002     mov    r0, r28604:    e1a01003     mov    r1, r38608:    e14b21dc     ldrd    r2, [fp, #-28]    ; 0xffffffe4860c:    eb000195     bl    8c68 <__aeabi_dmul>8610:    e1a02000     mov    r2, r08614:    e1a03001     mov    r3, r18618:    e1a00002     mov    r0, r2861c:    e1a01003     mov    r1, r38620:    e24bd00c     sub    sp, fp, #128624:    e8bd8830     pop    {r4, r5, fp, pc}00008628 <main>:8628:    e92d4830     push    {r4, r5, fp, lr}862c:    e28db00c     add    fp, sp, #128630:    e24dd030     sub    sp, sp, #48    ; 0x308634:    e3a03000     mov    r3, #08638:    e50b302c     str    r3, [fp, #-44]    ; 0xffffffd4863c:    e3a03000     mov    r3, #08640:    e50b3028     str    r3, [fp, #-40]    ; 0xffffffd88644:    e3a03000     mov    r3, #08648:    e50b3034     str    r3, [fp, #-52]    ; 0xffffffcc864c:    e3a03000     mov    r3, #08650:    e50b3030     str    r3, [fp, #-48]    ; 0xffffffd08654:    e3a00002     mov    r0, #28658:    e24b302c     sub    r3, fp, #44    ; 0x2c865c:    e1a01003     mov    r1, r38660:    ebffff59     bl    83cc <_init+0x44>8664:    e3a02000     mov    r2, #08668:    e3a035ff     mov    r3, #1069547520    ; 0x3fc00000866c:    e2833603     add    r3, r3, #3145728    ; 0x3000008670:    e14b21fc     strd    r2, [fp, #-28]    ; 0xffffffe48674:    ea000046     b    8794 <main+0x16c>8678:    e14b01dc     ldrd    r0, [fp, #-28]    ; 0xffffffe4867c:    e28f3f7b     add    r3, pc, #492    ; 0x1ec8680:    e1c320d0     ldrd    r2, [r3]8684:    eb000177     bl    8c68 <__aeabi_dmul>8688:    e1a02000     mov    r2, r0868c:    e1a03001     mov    r3, r18690:    e1a04002     mov    r4, r28694:    e1a05003     mov    r5, r38698:    e28f1f76     add    r1, pc, #472    ; 0x1d8869c:    e1c100d0     ldrd    r0, [r1]86a0:    e14b21dc     ldrd    r2, [fp, #-28]    ; 0xffffffe486a4:    eb000083     bl    88b8 <__aeabi_dsub>86a8:    e1a02000     mov    r2, r086ac:    e1a03001     mov    r3, r186b0:    e1a00004     mov    r0, r486b4:    e1a01005     mov    r1, r586b8:    eb000205     bl    8ed4 <__aeabi_ddiv>86bc:    e1a02000     mov    r2, r086c0:    e1a03001     mov    r3, r186c4:    e14b22f4     strd    r2, [fp, #-36]    ; 0xffffffdc86c8:    e14b02d4     ldrd    r0, [fp, #-36]    ; 0xffffffdc86cc:    e28f3f6b     add    r3, pc, #428    ; 0x1ac86d0:    e1c320d0     ldrd    r2, [r3]86d4:    eb0001fe     bl    8ed4 <__aeabi_ddiv>86d8:    e1a02000     mov    r2, r086dc:    e1a03001     mov    r3, r186e0:    e1a00002     mov    r0, r286e4:    e1a01003     mov    r1, r386e8:    ebffff6a     bl    8498 <ln>86ec:    e1a02000     mov    r2, r086f0:    e1a03001     mov    r3, r186f4:    e1a00002     mov    r0, r286f8:    e1a01003     mov    r1, r386fc:    e28f3f61     add    r3, pc, #388    ; 0x1848700:    e1c320d0     ldrd    r2, [r3]8704:    eb0001f2     bl    8ed4 <__aeabi_ddiv>8708:    e1a02000     mov    r2, r0870c:    e1a03001     mov    r3, r18710:    e1a00002     mov    r0, r28714:    e1a01003     mov    r1, r38718:    e28f3e17     add    r3, pc, #368    ; 0x170871c:    e1c320d0     ldrd    r2, [r3]8720:    eb000065     bl    88bc <__adddf3>8724:    e1a02000     mov    r2, r08728:    e1a03001     mov    r3, r1872c:    e3a00000     mov    r0, #08730:    e3a015ff     mov    r1, #1069547520    ; 0x3fc000008734:    e2811603     add    r1, r1, #3145728    ; 0x3000008738:    eb0001e5     bl    8ed4 <__aeabi_ddiv>873c:    e1a02000     mov    r2, r08740:    e1a03001     mov    r3, r18744:    e1a00002     mov    r0, r28748:    e1a01003     mov    r1, r3874c:    e28f3f51     add    r3, pc, #324    ; 0x1448750:    e1c320d0     ldrd    r2, [r3]8754:    eb000057     bl    88b8 <__aeabi_dsub>8758:    e1a02000     mov    r2, r0875c:    e1a03001     mov    r3, r18760:    e1a00002     mov    r0, r28764:    e1a01003     mov    r1, r38768:    eb0002a5     bl    9204 <__aeabi_d2iz>876c:    e1a03000     mov    r3, r08770:    e50b3010     str    r3, [fp, #-16]8774:    e14b01dc     ldrd    r0, [fp, #-28]    ; 0xffffffe48778:    e3a02000     mov    r2, #0877c:    e3a035ff     mov    r3, #1069547520    ; 0x3fc000008780:    e2833603     add    r3, r3, #3145728    ; 0x3000008784:    eb00004c     bl    88bc <__adddf3>8788:    e1a02000     mov    r2, r0878c:    e1a03001     mov    r3, r18790:    e14b21fc     strd    r2, [fp, #-28]    ; 0xffffffe48794:    e3a03001     mov    r3, #18798:    e1a04003     mov    r4, r3879c:    e14b01dc     ldrd    r0, [fp, #-28]    ; 0xffffffe487a0:    e28f30d0     add    r3, pc, #208    ; 0xd087a4:    e1c320d0     ldrd    r2, [r3]87a8:    eb000281     bl    91b4 <__aeabi_dcmplt>87ac:    e1a03000     mov    r3, r087b0:    e3530000     cmp    r3, #087b4:    1a000001     bne    87c0 <main+0x198>87b8:    e3a03000     mov    r3, #087bc:    e1a04003     mov    r4, r387c0:    e20430ff     and    r3, r4, #255    ; 0xff87c4:    e3530000     cmp    r3, #087c8:    1affffaa     bne    8678 <main+0x50>87cc:    e3a00002     mov    r0, #287d0:    e24b3034     sub    r3, fp, #52    ; 0x3487d4:    e1a01003     mov    r1, r387d8:    ebfffefb     bl    83cc <_init+0x44>87dc:    e59f10bc     ldr    r1, [pc, #188]    ; 88a0 <main+0x278>87e0:    e51b202c     ldr    r2, [fp, #-44]    ; 0xffffffd487e4:    e51b3028     ldr    r3, [fp, #-40]    ; 0xffffffd887e8:    e1a00001     mov    r0, r187ec:    e1a01002     mov    r1, r287f0:    e1a02003     mov    r2, r387f4:    ebfffeeb     bl    83a8 <_init+0x20>87f8:    e59f10a4     ldr    r1, [pc, #164]    ; 88a4 <main+0x27c>87fc:    e51b2034     ldr    r2, [fp, #-52]    ; 0xffffffcc8800:    e51b3030     ldr    r3, [fp, #-48]    ; 0xffffffd08804:    e1a00001     mov    r0, r18808:    e1a01002     mov    r1, r2880c:    e1a02003     mov    r2, r38810:    ebfffee4     bl    83a8 <_init+0x20>8814:    e59f008c     ldr    r0, [pc, #140]    ; 88a8 <main+0x280>8818:    e51b2034     ldr    r2, [fp, #-52]    ; 0xffffffcc881c:    e51b302c     ldr    r3, [fp, #-44]    ; 0xffffffd48820:    e0632002     rsb    r2, r3, r28824:    e51b1030     ldr    r1, [fp, #-48]    ; 0xffffffd08828:    e51b3028     ldr    r3, [fp, #-40]    ; 0xffffffd8882c:    e0633001     rsb    r3, r3, r18830:    e1a01000     mov    r1, r08834:    e1a00001     mov    r0, r18838:    e1a01002     mov    r1, r2883c:    e1a02003     mov    r2, r38840:    ebfffed8     bl    83a8 <_init+0x20>8844:    e59f2060     ldr    r2, [pc, #96]    ; 88ac <main+0x284>8848:    e51b3010     ldr    r3, [fp, #-16]884c:    e58d3000     str    r3, [sp]8850:    e1a03002     mov    r3, r28854:    e1a00003     mov    r0, r38858:    e14b21dc     ldrd    r2, [fp, #-28]    ; 0xffffffe4885c:    ebfffed1     bl    83a8 <_init+0x20>8860:    e3a03000     mov    r3, #08864:    e1a00003     mov    r0, r38868:    e24bd00c     sub    sp, fp, #12886c:    e8bd8830     pop    {r4, r5, fp, pc}8870:    00000000     .word    0x000000008874:    40e6f300     .word    0x40e6f3008878:    00000000     .word    0x00000000887c:    409c2000     .word    0x409c20008880:    00000000     .word    0x000000008884:    40c38800     .word    0x40c388008888:    00000000     .word    0x00000000888c:    40aedc00     .word    0x40aedc008890:    dcb5db83     .word    0xdcb5db838894:    3f6b79e1     .word    0x3f6b79e18898:    66666666     .word    0x66666666889c:    40711266     .word    0x4071126688a0:    00009338     .word    0x0000933888a4:    00009354     .word    0x0000935488a8:    00009370     .word    0x0000937088ac:    00009388     .word    0x00009388000088b0 <__aeabi_drsub>:88b0:    e2211102     eor    r1, r1, #-2147483648    ; 0x8000000088b4:    ea000000     b    88bc <__adddf3>000088b8 <__aeabi_dsub>:88b8:    e2233102     eor    r3, r3, #-2147483648    ; 0x80000000000088bc <__adddf3>:88bc:    e92d4030     push    {r4, r5, lr}88c0:    e1a04081     lsl    r4, r1, #188c4:    e1a05083     lsl    r5, r3, #188c8:    e1340005     teq    r4, r588cc:    01300002     teqeq    r0, r288d0:    1194c000     orrsne    ip, r4, r088d4:    1195c002     orrsne    ip, r5, r288d8:    11f0cac4     mvnsne    ip, r4, asr #2188dc:    11f0cac5     mvnsne    ip, r5, asr #2188e0:    0a000079     beq    8acc <__adddf3+0x210>88e4:    e1a04aa4     lsr    r4, r4, #2188e8:    e0745aa5     rsbs    r5, r4, r5, lsr #2188ec:    b2655000     rsblt    r5, r5, #088f0:    da000006     ble    8910 <__adddf3+0x54>88f4:    e0844005     add    r4, r4, r588f8:    e0202002     eor    r2, r0, r288fc:    e0213003     eor    r3, r1, r38900:    e0220000     eor    r0, r2, r08904:    e0231001     eor    r1, r3, r18908:    e0202002     eor    r2, r0, r2890c:    e0213003     eor    r3, r1, r38910:    e3550036     cmp    r5, #54    ; 0x368914:    88bd8030     pophi    {r4, r5, pc}8918:    e3110102     tst    r1, #-2147483648    ; 0x80000000891c:    e1a01601     lsl    r1, r1, #128920:    e3a0c601     mov    ip, #1048576    ; 0x1000008924:    e18c1621     orr    r1, ip, r1, lsr #128928:    0a000001     beq    8934 <__adddf3+0x78>892c:    e2700000     rsbs    r0, r0, #08930:    e2e11000     rsc    r1, r1, #08934:    e3130102     tst    r3, #-2147483648    ; 0x800000008938:    e1a03603     lsl    r3, r3, #12893c:    e18c3623     orr    r3, ip, r3, lsr #128940:    0a000001     beq    894c <__adddf3+0x90>8944:    e2722000     rsbs    r2, r2, #08948:    e2e33000     rsc    r3, r3, #0894c:    e1340005     teq    r4, r58950:    0a000057     beq    8ab4 <__adddf3+0x1f8>8954:    e2444001     sub    r4, r4, #18958:    e275e020     rsbs    lr, r5, #32895c:    ba000005     blt    8978 <__adddf3+0xbc>8960:    e1a0ce12     lsl    ip, r2, lr8964:    e0900532     adds    r0, r0, r2, lsr r58968:    e2a11000     adc    r1, r1, #0896c:    e0900e13     adds    r0, r0, r3, lsl lr8970:    e0b11553     adcs    r1, r1, r3, asr r58974:    ea000006     b    8994 <__adddf3+0xd8>8978:    e2455020     sub    r5, r5, #32897c:    e28ee020     add    lr, lr, #328980:    e3520001     cmp    r2, #18984:    e1a0ce13     lsl    ip, r3, lr8988:    238cc002     orrcs    ip, ip, #2898c:    e0900553     adds    r0, r0, r3, asr r58990:    e0b11fc3     adcs    r1, r1, r3, asr #318994:    e2015102     and    r5, r1, #-2147483648    ; 0x800000008998:    5a000002     bpl    89a8 <__adddf3+0xec>899c:    e27cc000     rsbs    ip, ip, #089a0:    e2f00000     rscs    r0, r0, #089a4:    e2e11000     rsc    r1, r1, #089a8:    e3510601     cmp    r1, #1048576    ; 0x10000089ac:    3a00000e     bcc    89ec <__adddf3+0x130>89b0:    e3510602     cmp    r1, #2097152    ; 0x20000089b4:    3a000006     bcc    89d4 <__adddf3+0x118>89b8:    e1b010a1     lsrs    r1, r1, #189bc:    e1b00060     rrxs    r0, r089c0:    e1a0c06c     rrx    ip, ip89c4:    e2844001     add    r4, r4, #189c8:    e1a02a84     lsl    r2, r4, #2189cc:    e3720501     cmn    r2, #4194304    ; 0x40000089d0:    2a000055     bcs    8b2c <__adddf3+0x270>89d4:    e35c0102     cmp    ip, #-2147483648    ; 0x8000000089d8:    01b0c0a0     lsrseq    ip, r0, #189dc:    e2b00000     adcs    r0, r0, #089e0:    e0a11a04     adc    r1, r1, r4, lsl #2089e4:    e1811005     orr    r1, r1, r589e8:    e8bd8030     pop    {r4, r5, pc}89ec:    e1b0c08c     lsls    ip, ip, #189f0:    e0b00000     adcs    r0, r0, r089f4:    e0a11001     adc    r1, r1, r189f8:    e3110601     tst    r1, #1048576    ; 0x10000089fc:    e2444001     sub    r4, r4, #18a00:    1afffff3     bne    89d4 <__adddf3+0x118>8a04:    e3310000     teq    r1, #08a08:    01a01000     moveq    r1, r08a0c:    03a00000     moveq    r0, #08a10:    e16f3f11     clz    r3, r18a14:    02833020     addeq    r3, r3, #328a18:    e243300b     sub    r3, r3, #118a1c:    e2532020     subs    r2, r3, #328a20:    aa000007     bge    8a44 <__adddf3+0x188>8a24:    e292200c     adds    r2, r2, #128a28:    da000004     ble    8a40 <__adddf3+0x184>8a2c:    e282c014     add    ip, r2, #208a30:    e262200c     rsb    r2, r2, #128a34:    e1a00c11     lsl    r0, r1, ip8a38:    e1a01231     lsr    r1, r1, r28a3c:    ea000004     b    8a54 <__adddf3+0x198>8a40:    e2822014     add    r2, r2, #208a44:    d262c020     rsble    ip, r2, #328a48:    e1a01211     lsl    r1, r1, r28a4c:    d1811c30     orrle    r1, r1, r0, lsr ip8a50:    d1a00210     lslle    r0, r0, r28a54:    e0544003     subs    r4, r4, r38a58:    a0811a04     addge    r1, r1, r4, lsl #208a5c:    a1811005     orrge    r1, r1, r58a60:    a8bd8030     popge    {r4, r5, pc}8a64:    e1e04004     mvn    r4, r48a68:    e254401f     subs    r4, r4, #318a6c:    aa00000d     bge    8aa8 <__adddf3+0x1ec>8a70:    e294400c     adds    r4, r4, #128a74:    ca000005     bgt    8a90 <__adddf3+0x1d4>8a78:    e2844014     add    r4, r4, #208a7c:    e2642020     rsb    r2, r4, #328a80:    e1a00430     lsr    r0, r0, r48a84:    e1800211     orr    r0, r0, r1, lsl r28a88:    e1851431     orr    r1, r5, r1, lsr r48a8c:    e8bd8030     pop    {r4, r5, pc}8a90:    e264400c     rsb    r4, r4, #128a94:    e2642020     rsb    r2, r4, #328a98:    e1a00230     lsr    r0, r0, r28a9c:    e1800411     orr    r0, r0, r1, lsl r48aa0:    e1a01005     mov    r1, r58aa4:    e8bd8030     pop    {r4, r5, pc}8aa8:    e1a00431     lsr    r0, r1, r48aac:    e1a01005     mov    r1, r58ab0:    e8bd8030     pop    {r4, r5, pc}8ab4:    e3340000     teq    r4, #08ab8:    e2233601     eor    r3, r3, #1048576    ; 0x1000008abc:    02211601     eoreq    r1, r1, #1048576    ; 0x1000008ac0:    02844001     addeq    r4, r4, #18ac4:    12455001     subne    r5, r5, #18ac8:    eaffffa1     b    8954 <__adddf3+0x98>8acc:    e1f0cac4     mvns    ip, r4, asr #218ad0:    11f0cac5     mvnsne    ip, r5, asr #218ad4:    0a000018     beq    8b3c <__adddf3+0x280>8ad8:    e1340005     teq    r4, r58adc:    01300002     teqeq    r0, r28ae0:    0a000003     beq    8af4 <__adddf3+0x238>8ae4:    e194c000     orrs    ip, r4, r08ae8:    01a01003     moveq    r1, r38aec:    01a00002     moveq    r0, r28af0:    e8bd8030     pop    {r4, r5, pc}8af4:    e1310003     teq    r1, r38af8:    13a01000     movne    r1, #08afc:    13a00000     movne    r0, #08b00:    18bd8030     popne    {r4, r5, pc}8b04:    e1b0caa4     lsrs    ip, r4, #218b08:    1a000003     bne    8b1c <__adddf3+0x260>8b0c:    e1b00080     lsls    r0, r0, #18b10:    e0b11001     adcs    r1, r1, r18b14:    23811102     orrcs    r1, r1, #-2147483648    ; 0x800000008b18:    e8bd8030     pop    {r4, r5, pc}8b1c:    e2944501     adds    r4, r4, #4194304    ; 0x4000008b20:    32811601     addcc    r1, r1, #1048576    ; 0x1000008b24:    38bd8030     popcc    {r4, r5, pc}8b28:    e2015102     and    r5, r1, #-2147483648    ; 0x800000008b2c:    e385147f     orr    r1, r5, #2130706432    ; 0x7f0000008b30:    e381160f     orr    r1, r1, #15728640    ; 0xf000008b34:    e3a00000     mov    r0, #08b38:    e8bd8030     pop    {r4, r5, pc}8b3c:    e1f0cac4     mvns    ip, r4, asr #218b40:    11a01003     movne    r1, r38b44:    11a00002     movne    r0, r28b48:    01f0cac5     mvnseq    ip, r5, asr #218b4c:    11a03001     movne    r3, r18b50:    11a02000     movne    r2, r08b54:    e1904601     orrs    r4, r0, r1, lsl #128b58:    01925603     orrseq    r5, r2, r3, lsl #128b5c:    01310003     teqeq    r1, r38b60:    13811702     orrne    r1, r1, #524288    ; 0x800008b64:    e8bd8030     pop    {r4, r5, pc}00008b68 <__aeabi_ui2d>:8b68:    e3300000     teq    r0, #08b6c:    03a01000     moveq    r1, #08b70:    012fff1e     bxeq    lr8b74:    e92d4030     push    {r4, r5, lr}8b78:    e3a04b01     mov    r4, #1024    ; 0x4008b7c:    e2844032     add    r4, r4, #50    ; 0x328b80:    e3a05000     mov    r5, #08b84:    e3a01000     mov    r1, #08b88:    eaffff9d     b    8a04 <__adddf3+0x148>00008b8c <__aeabi_i2d>:8b8c:    e3300000     teq    r0, #08b90:    03a01000     moveq    r1, #08b94:    012fff1e     bxeq    lr8b98:    e92d4030     push    {r4, r5, lr}8b9c:    e3a04b01     mov    r4, #1024    ; 0x4008ba0:    e2844032     add    r4, r4, #50    ; 0x328ba4:    e2105102     ands    r5, r0, #-2147483648    ; 0x800000008ba8:    42600000     rsbmi    r0, r0, #08bac:    e3a01000     mov    r1, #08bb0:    eaffff93     b    8a04 <__adddf3+0x148>00008bb4 <__aeabi_f2d>:8bb4:    e1b02080     lsls    r2, r0, #18bb8:    e1a011c2     asr    r1, r2, #38bbc:    e1a01061     rrx    r1, r18bc0:    e1a00e02     lsl    r0, r2, #288bc4:    121234ff     andsne    r3, r2, #-16777216    ; 0xff0000008bc8:    133304ff     teqne    r3, #-16777216    ; 0xff0000008bcc:    1221130e     eorne    r1, r1, #939524096    ; 0x380000008bd0:    112fff1e     bxne    lr8bd4:    e3320000     teq    r2, #08bd8:    133304ff     teqne    r3, #-16777216    ; 0xff0000008bdc:    012fff1e     bxeq    lr8be0:    e92d4030     push    {r4, r5, lr}8be4:    e3a04d0e     mov    r4, #896    ; 0x3808be8:    e2015102     and    r5, r1, #-2147483648    ; 0x800000008bec:    e3c11102     bic    r1, r1, #-2147483648    ; 0x800000008bf0:    eaffff83     b    8a04 <__adddf3+0x148>00008bf4 <__aeabi_ul2d>:8bf4:    e1902001     orrs    r2, r0, r18bf8:    012fff1e     bxeq    lr8bfc:    e92d4030     push    {r4, r5, lr}8c00:    e3a05000     mov    r5, #08c04:    ea000006     b    8c24 <__aeabi_l2d+0x1c>00008c08 <__aeabi_l2d>:8c08:    e1902001     orrs    r2, r0, r18c0c:    012fff1e     bxeq    lr8c10:    e92d4030     push    {r4, r5, lr}8c14:    e2115102     ands    r5, r1, #-2147483648    ; 0x800000008c18:    5a000001     bpl    8c24 <__aeabi_l2d+0x1c>8c1c:    e2700000     rsbs    r0, r0, #08c20:    e2e11000     rsc    r1, r1, #08c24:    e3a04b01     mov    r4, #1024    ; 0x4008c28:    e2844032     add    r4, r4, #50    ; 0x328c2c:    e1b0cb21     lsrs    ip, r1, #228c30:    0affff5c     beq    89a8 <__adddf3+0xec>8c34:    e3a02003     mov    r2, #38c38:    e1b0c1ac     lsrs    ip, ip, #38c3c:    12822003     addne    r2, r2, #38c40:    e1b0c1ac     lsrs    ip, ip, #38c44:    12822003     addne    r2, r2, #38c48:    e08221ac     add    r2, r2, ip, lsr #38c4c:    e2623020     rsb    r3, r2, #328c50:    e1a0c310     lsl    ip, r0, r38c54:    e1a00230     lsr    r0, r0, r28c58:    e1800311     orr    r0, r0, r1, lsl r38c5c:    e1a01231     lsr    r1, r1, r28c60:    e0844002     add    r4, r4, r28c64:    eaffff4f     b    89a8 <__adddf3+0xec>00008c68 <__aeabi_dmul>:8c68:    e92d4070     push    {r4, r5, r6, lr}8c6c:    e3a0c0ff     mov    ip, #255    ; 0xff8c70:    e38ccc07     orr    ip, ip, #1792    ; 0x7008c74:    e01c4a21     ands    r4, ip, r1, lsr #208c78:    101c5a23     andsne    r5, ip, r3, lsr #208c7c:    1134000c     teqne    r4, ip8c80:    1135000c     teqne    r5, ip8c84:    0b00006f     bleq    8e48 <__aeabi_dmul+0x1e0>8c88:    e0844005     add    r4, r4, r58c8c:    e0216003     eor    r6, r1, r38c90:    e1c11a8c     bic    r1, r1, ip, lsl #218c94:    e1c33a8c     bic    r3, r3, ip, lsl #218c98:    e1905601     orrs    r5, r0, r1, lsl #128c9c:    11925603     orrsne    r5, r2, r3, lsl #128ca0:    e3811601     orr    r1, r1, #1048576    ; 0x1000008ca4:    e3833601     orr    r3, r3, #1048576    ; 0x1000008ca8:    0a00001c     beq    8d20 <__aeabi_dmul+0xb8>8cac:    e08ec290     umull    ip, lr, r0, r28cb0:    e3a05000     mov    r5, #08cb4:    e0a5e291     umlal    lr, r5, r1, r28cb8:    e2062102     and    r2, r6, #-2147483648    ; 0x800000008cbc:    e0a5e390     umlal    lr, r5, r0, r38cc0:    e3a06000     mov    r6, #08cc4:    e0a65391     umlal    r5, r6, r1, r38cc8:    e33c0000     teq    ip, #08ccc:    138ee001     orrne    lr, lr, #18cd0:    e24440ff     sub    r4, r4, #255    ; 0xff8cd4:    e3560c02     cmp    r6, #512    ; 0x2008cd8:    e2c44c03     sbc    r4, r4, #768    ; 0x3008cdc:    2a000002     bcs    8cec <__aeabi_dmul+0x84>8ce0:    e1b0e08e     lsls    lr, lr, #18ce4:    e0b55005     adcs    r5, r5, r58ce8:    e0a66006     adc    r6, r6, r68cec:    e1821586     orr    r1, r2, r6, lsl #118cf0:    e1811aa5     orr    r1, r1, r5, lsr #218cf4:    e1a00585     lsl    r0, r5, #118cf8:    e1800aae     orr    r0, r0, lr, lsr #218cfc:    e1a0e58e     lsl    lr, lr, #118d00:    e254c0fd     subs    ip, r4, #253    ; 0xfd8d04:    835c0c07     cmphi    ip, #1792    ; 0x7008d08:    8a00000f     bhi    8d4c <__aeabi_dmul+0xe4>8d0c:    e35e0102     cmp    lr, #-2147483648    ; 0x800000008d10:    01b0e0a0     lsrseq    lr, r0, #18d14:    e2b00000     adcs    r0, r0, #08d18:    e0a11a04     adc    r1, r1, r4, lsl #208d1c:    e8bd8070     pop    {r4, r5, r6, pc}8d20:    e2066102     and    r6, r6, #-2147483648    ; 0x800000008d24:    e1861001     orr    r1, r6, r18d28:    e1800002     orr    r0, r0, r28d2c:    e0211003     eor    r1, r1, r38d30:    e05440ac     subs    r4, r4, ip, lsr #18d34:    c074500c     rsbsgt    r5, r4, ip8d38:    c1811a04     orrgt    r1, r1, r4, lsl #208d3c:    c8bd8070     popgt    {r4, r5, r6, pc}8d40:    e3811601     orr    r1, r1, #1048576    ; 0x1000008d44:    e3a0e000     mov    lr, #08d48:    e2544001     subs    r4, r4, #18d4c:    ca000058     bgt    8eb4 <__aeabi_dmul+0x24c>8d50:    e3740036     cmn    r4, #54    ; 0x368d54:    d3a00000     movle    r0, #08d58:    d2011102     andle    r1, r1, #-2147483648    ; 0x800000008d5c:    d8bd8070     pople    {r4, r5, r6, pc}8d60:    e2644000     rsb    r4, r4, #08d64:    e2544020     subs    r4, r4, #328d68:    aa000018     bge    8dd0 <__aeabi_dmul+0x168>8d6c:    e294400c     adds    r4, r4, #128d70:    ca00000b     bgt    8da4 <__aeabi_dmul+0x13c>8d74:    e2844014     add    r4, r4, #208d78:    e2645020     rsb    r5, r4, #328d7c:    e1a03510     lsl    r3, r0, r58d80:    e1a00430     lsr    r0, r0, r48d84:    e1800511     orr    r0, r0, r1, lsl r58d88:    e2012102     and    r2, r1, #-2147483648    ; 0x800000008d8c:    e3c11102     bic    r1, r1, #-2147483648    ; 0x800000008d90:    e0900fa3     adds    r0, r0, r3, lsr #318d94:    e0a21431     adc    r1, r2, r1, lsr r48d98:    e19ee083     orrs    lr, lr, r3, lsl #18d9c:    01c00fa3     biceq    r0, r0, r3, lsr #318da0:    e8bd8070     pop    {r4, r5, r6, pc}8da4:    e264400c     rsb    r4, r4, #128da8:    e2645020     rsb    r5, r4, #328dac:    e1a03410     lsl    r3, r0, r48db0:    e1a00530     lsr    r0, r0, r58db4:    e1800411     orr    r0, r0, r1, lsl r48db8:    e2011102     and    r1, r1, #-2147483648    ; 0x800000008dbc:    e0900fa3     adds    r0, r0, r3, lsr #318dc0:    e2a11000     adc    r1, r1, #08dc4:    e19ee083     orrs    lr, lr, r3, lsl #18dc8:    01c00fa3     biceq    r0, r0, r3, lsr #318dcc:    e8bd8070     pop    {r4, r5, r6, pc}8dd0:    e2645020     rsb    r5, r4, #328dd4:    e18ee510     orr    lr, lr, r0, lsl r58dd8:    e1a03430     lsr    r3, r0, r48ddc:    e1833511     orr    r3, r3, r1, lsl r58de0:    e1a00431     lsr    r0, r1, r48de4:    e2011102     and    r1, r1, #-2147483648    ; 0x800000008de8:    e1c00431     bic    r0, r0, r1, lsr r48dec:    e0800fa3     add    r0, r0, r3, lsr #318df0:    e19ee083     orrs    lr, lr, r3, lsl #18df4:    01c00fa3     biceq    r0, r0, r3, lsr #318df8:    e8bd8070     pop    {r4, r5, r6, pc}8dfc:    e3340000     teq    r4, #08e00:    1a000008     bne    8e28 <__aeabi_dmul+0x1c0>8e04:    e2016102     and    r6, r1, #-2147483648    ; 0x800000008e08:    e1b00080     lsls    r0, r0, #18e0c:    e0a11001     adc    r1, r1, r18e10:    e3110601     tst    r1, #1048576    ; 0x1000008e14:    02444001     subeq    r4, r4, #18e18:    0afffffa     beq    8e08 <__aeabi_dmul+0x1a0>8e1c:    e1811006     orr    r1, r1, r68e20:    e3350000     teq    r5, #08e24:    112fff1e     bxne    lr8e28:    e2036102     and    r6, r3, #-2147483648    ; 0x800000008e2c:    e1b02082     lsls    r2, r2, #18e30:    e0a33003     adc    r3, r3, r38e34:    e3130601     tst    r3, #1048576    ; 0x1000008e38:    02455001     subeq    r5, r5, #18e3c:    0afffffa     beq    8e2c <__aeabi_dmul+0x1c4>8e40:    e1833006     orr    r3, r3, r68e44:    e12fff1e     bx    lr8e48:    e134000c     teq    r4, ip8e4c:    e00c5a23     and    r5, ip, r3, lsr #208e50:    1135000c     teqne    r5, ip8e54:    0a000006     beq    8e74 <__aeabi_dmul+0x20c>8e58:    e1906081     orrs    r6, r0, r1, lsl #18e5c:    11926083     orrsne    r6, r2, r3, lsl #18e60:    1affffe5     bne    8dfc <__aeabi_dmul+0x194>8e64:    e0211003     eor    r1, r1, r38e68:    e2011102     and    r1, r1, #-2147483648    ; 0x800000008e6c:    e3a00000     mov    r0, #08e70:    e8bd8070     pop    {r4, r5, r6, pc}8e74:    e1906081     orrs    r6, r0, r1, lsl #18e78:    01a00002     moveq    r0, r28e7c:    01a01003     moveq    r1, r38e80:    11926083     orrsne    r6, r2, r3, lsl #18e84:    0a00000f     beq    8ec8 <__aeabi_dmul+0x260>8e88:    e134000c     teq    r4, ip8e8c:    1a000001     bne    8e98 <__aeabi_dmul+0x230>8e90:    e1906601     orrs    r6, r0, r1, lsl #128e94:    1a00000b     bne    8ec8 <__aeabi_dmul+0x260>8e98:    e135000c     teq    r5, ip8e9c:    1a000003     bne    8eb0 <__aeabi_dmul+0x248>8ea0:    e1926603     orrs    r6, r2, r3, lsl #128ea4:    11a00002     movne    r0, r28ea8:    11a01003     movne    r1, r38eac:    1a000005     bne    8ec8 <__aeabi_dmul+0x260>8eb0:    e0211003     eor    r1, r1, r38eb4:    e2011102     and    r1, r1, #-2147483648    ; 0x800000008eb8:    e381147f     orr    r1, r1, #2130706432    ; 0x7f0000008ebc:    e381160f     orr    r1, r1, #15728640    ; 0xf000008ec0:    e3a00000     mov    r0, #08ec4:    e8bd8070     pop    {r4, r5, r6, pc}8ec8:    e381147f     orr    r1, r1, #2130706432    ; 0x7f0000008ecc:    e381173e     orr    r1, r1, #16252928    ; 0xf800008ed0:    e8bd8070     pop    {r4, r5, r6, pc}00008ed4 <__aeabi_ddiv>:8ed4:    e92d4070     push    {r4, r5, r6, lr}8ed8:    e3a0c0ff     mov    ip, #255    ; 0xff8edc:    e38ccc07     orr    ip, ip, #1792    ; 0x7008ee0:    e01c4a21     ands    r4, ip, r1, lsr #208ee4:    101c5a23     andsne    r5, ip, r3, lsr #208ee8:    1134000c     teqne    r4, ip8eec:    1135000c     teqne    r5, ip8ef0:    0b00005c     bleq    9068 <__aeabi_ddiv+0x194>8ef4:    e0444005     sub    r4, r4, r58ef8:    e021e003     eor    lr, r1, r38efc:    e1925603     orrs    r5, r2, r3, lsl #128f00:    e1a01601     lsl    r1, r1, #128f04:    0a00004b     beq    9038 <__aeabi_ddiv+0x164>8f08:    e1a03603     lsl    r3, r3, #128f0c:    e3a05201     mov    r5, #268435456    ; 0x100000008f10:    e1853223     orr    r3, r5, r3, lsr #48f14:    e1833c22     orr    r3, r3, r2, lsr #248f18:    e1a02402     lsl    r2, r2, #88f1c:    e1855221     orr    r5, r5, r1, lsr #48f20:    e1855c20     orr    r5, r5, r0, lsr #248f24:    e1a06400     lsl    r6, r0, #88f28:    e20e1102     and    r1, lr, #-2147483648    ; 0x800000008f2c:    e1550003     cmp    r5, r38f30:    01560002     cmpeq    r6, r28f34:    e2a440fd     adc    r4, r4, #253    ; 0xfd8f38:    e2844c03     add    r4, r4, #768    ; 0x3008f3c:    2a000001     bcs    8f48 <__aeabi_ddiv+0x74>8f40:    e1b030a3     lsrs    r3, r3, #18f44:    e1a02062     rrx    r2, r28f48:    e0566002     subs    r6, r6, r28f4c:    e0c55003     sbc    r5, r5, r38f50:    e1b030a3     lsrs    r3, r3, #18f54:    e1a02062     rrx    r2, r28f58:    e3a00601     mov    r0, #1048576    ; 0x1000008f5c:    e3a0c702     mov    ip, #524288    ; 0x800008f60:    e056e002     subs    lr, r6, r28f64:    e0d5e003     sbcs    lr, r5, r38f68:    20466002     subcs    r6, r6, r28f6c:    21a0500e     movcs    r5, lr8f70:    2180000c     orrcs    r0, r0, ip8f74:    e1b030a3     lsrs    r3, r3, #18f78:    e1a02062     rrx    r2, r28f7c:    e056e002     subs    lr, r6, r28f80:    e0d5e003     sbcs    lr, r5, r38f84:    20466002     subcs    r6, r6, r28f88:    21a0500e     movcs    r5, lr8f8c:    218000ac     orrcs    r0, r0, ip, lsr #18f90:    e1b030a3     lsrs    r3, r3, #18f94:    e1a02062     rrx    r2, r28f98:    e056e002     subs    lr, r6, r28f9c:    e0d5e003     sbcs    lr, r5, r38fa0:    20466002     subcs    r6, r6, r28fa4:    21a0500e     movcs    r5, lr8fa8:    2180012c     orrcs    r0, r0, ip, lsr #28fac:    e1b030a3     lsrs    r3, r3, #18fb0:    e1a02062     rrx    r2, r28fb4:    e056e002     subs    lr, r6, r28fb8:    e0d5e003     sbcs    lr, r5, r38fbc:    20466002     subcs    r6, r6, r28fc0:    21a0500e     movcs    r5, lr8fc4:    218001ac     orrcs    r0, r0, ip, lsr #38fc8:    e195e006     orrs    lr, r5, r68fcc:    0a00000d     beq    9008 <__aeabi_ddiv+0x134>8fd0:    e1a05205     lsl    r5, r5, #48fd4:    e1855e26     orr    r5, r5, r6, lsr #288fd8:    e1a06206     lsl    r6, r6, #48fdc:    e1a03183     lsl    r3, r3, #38fe0:    e1833ea2     orr    r3, r3, r2, lsr #298fe4:    e1a02182     lsl    r2, r2, #38fe8:    e1b0c22c     lsrs    ip, ip, #48fec:    1affffdb     bne    8f60 <__aeabi_ddiv+0x8c>8ff0:    e3110601     tst    r1, #1048576    ; 0x1000008ff4:    1a000006     bne    9014 <__aeabi_ddiv+0x140>8ff8:    e1811000     orr    r1, r1, r08ffc:    e3a00000     mov    r0, #09000:    e3a0c102     mov    ip, #-2147483648    ; 0x800000009004:    eaffffd5     b    8f60 <__aeabi_ddiv+0x8c>9008:    e3110601     tst    r1, #1048576    ; 0x100000900c:    01811000     orreq    r1, r1, r09010:    03a00000     moveq    r0, #09014:    e254c0fd     subs    ip, r4, #253    ; 0xfd9018:    835c0c07     cmphi    ip, #1792    ; 0x700901c:    8affff4a     bhi    8d4c <__aeabi_dmul+0xe4>9020:    e055c003     subs    ip, r5, r39024:    0056c002     subseq    ip, r6, r29028:    01b0c0a0     lsrseq    ip, r0, #1902c:    e2b00000     adcs    r0, r0, #09030:    e0a11a04     adc    r1, r1, r4, lsl #209034:    e8bd8070     pop    {r4, r5, r6, pc}9038:    e20ee102     and    lr, lr, #-2147483648    ; 0x80000000903c:    e18e1621     orr    r1, lr, r1, lsr #129040:    e09440ac     adds    r4, r4, ip, lsr #19044:    c074500c     rsbsgt    r5, r4, ip9048:    c1811a04     orrgt    r1, r1, r4, lsl #20904c:    c8bd8070     popgt    {r4, r5, r6, pc}9050:    e3811601     orr    r1, r1, #1048576    ; 0x1000009054:    e3a0e000     mov    lr, #09058:    e2544001     subs    r4, r4, #1905c:    eaffff3a     b    8d4c <__aeabi_dmul+0xe4>9060:    e185e006     orr    lr, r5, r69064:    eaffff38     b    8d4c <__aeabi_dmul+0xe4>9068:    e00c5a23     and    r5, ip, r3, lsr #20906c:    e134000c     teq    r4, ip9070:    0135000c     teqeq    r5, ip9074:    0affff93     beq    8ec8 <__aeabi_dmul+0x260>9078:    e134000c     teq    r4, ip907c:    1a000006     bne    909c <__aeabi_ddiv+0x1c8>9080:    e1904601     orrs    r4, r0, r1, lsl #129084:    1affff8f     bne    8ec8 <__aeabi_dmul+0x260>9088:    e135000c     teq    r5, ip908c:    1affff87     bne    8eb0 <__aeabi_dmul+0x248>9090:    e1a00002     mov    r0, r29094:    e1a01003     mov    r1, r39098:    eaffff8a     b    8ec8 <__aeabi_dmul+0x260>909c:    e135000c     teq    r5, ip90a0:    1a000004     bne    90b8 <__aeabi_ddiv+0x1e4>90a4:    e1925603     orrs    r5, r2, r3, lsl #1290a8:    0affff6d     beq    8e64 <__aeabi_dmul+0x1fc>90ac:    e1a00002     mov    r0, r290b0:    e1a01003     mov    r1, r390b4:    eaffff83     b    8ec8 <__aeabi_dmul+0x260>90b8:    e1906081     orrs    r6, r0, r1, lsl #190bc:    11926083     orrsne    r6, r2, r3, lsl #190c0:    1affff4d     bne    8dfc <__aeabi_dmul+0x194>90c4:    e1904081     orrs    r4, r0, r1, lsl #190c8:    1affff78     bne    8eb0 <__aeabi_dmul+0x248>90cc:    e1925083     orrs    r5, r2, r3, lsl #190d0:    1affff63     bne    8e64 <__aeabi_dmul+0x1fc>90d4:    eaffff7b     b    8ec8 <__aeabi_dmul+0x260>000090d8 <__gedf2>:90d8:    e3e0c000     mvn    ip, #090dc:    ea000002     b    90ec <__cmpdf2+0x4>000090e0 <__ledf2>:90e0:    e3a0c001     mov    ip, #190e4:    ea000000     b    90ec <__cmpdf2+0x4>000090e8 <__cmpdf2>:90e8:    e3a0c001     mov    ip, #190ec:    e52dc004     push    {ip}        ; (str ip, [sp, #-4]!)90f0:    e1a0c081     lsl    ip, r1, #190f4:    e1f0cacc     mvns    ip, ip, asr #2190f8:    e1a0c083     lsl    ip, r3, #190fc:    11f0cacc     mvnsne    ip, ip, asr #219100:    0a00000e     beq    9140 <__cmpdf2+0x58>9104:    e28dd004     add    sp, sp, #49108:    e190c081     orrs    ip, r0, r1, lsl #1910c:    0192c083     orrseq    ip, r2, r3, lsl #19110:    11310003     teqne    r1, r39114:    01300002     teqeq    r0, r29118:    03a00000     moveq    r0, #0911c:    012fff1e     bxeq    lr9120:    e3700000     cmn    r0, #09124:    e1310003     teq    r1, r39128:    51510003     cmppl    r1, r3912c:    01500002     cmpeq    r0, r29130:    21a00fc3     asrcs    r0, r3, #319134:    31e00fc3     mvncc    r0, r3, asr #319138:    e3800001     orr    r0, r0, #1913c:    e12fff1e     bx    lr9140:    e1a0c081     lsl    ip, r1, #19144:    e1f0cacc     mvns    ip, ip, asr #219148:    1a000001     bne    9154 <__cmpdf2+0x6c>914c:    e190c601     orrs    ip, r0, r1, lsl #129150:    1a000004     bne    9168 <__cmpdf2+0x80>9154:    e1a0c083     lsl    ip, r3, #19158:    e1f0cacc     mvns    ip, ip, asr #21915c:    1affffe8     bne    9104 <__cmpdf2+0x1c>9160:    e192c603     orrs    ip, r2, r3, lsl #129164:    0affffe6     beq    9104 <__cmpdf2+0x1c>9168:    e49d0004     pop    {r0}        ; (ldr r0, [sp], #4)916c:    e12fff1e     bx    lr00009170 <__aeabi_cdrcmple>:9170:    e1a0c000     mov    ip, r09174:    e1a00002     mov    r0, r29178:    e1a0200c     mov    r2, ip917c:    e1a0c001     mov    ip, r19180:    e1a01003     mov    r1, r39184:    e1a0300c     mov    r3, ip9188:    eaffffff     b    918c <__aeabi_cdcmpeq>0000918c <__aeabi_cdcmpeq>:918c:    e92d4001     push    {r0, lr}9190:    ebffffd4     bl    90e8 <__cmpdf2>9194:    e3500000     cmp    r0, #09198:    43700000     cmnmi    r0, #0919c:    e8bd8001     pop    {r0, pc}000091a0 <__aeabi_dcmpeq>:91a0:    e52de008     str    lr, [sp, #-8]!91a4:    ebfffff8     bl    918c <__aeabi_cdcmpeq>91a8:    03a00001     moveq    r0, #191ac:    13a00000     movne    r0, #091b0:    e49df008     ldr    pc, [sp], #8000091b4 <__aeabi_dcmplt>:91b4:    e52de008     str    lr, [sp, #-8]!91b8:    ebfffff3     bl    918c <__aeabi_cdcmpeq>91bc:    33a00001     movcc    r0, #191c0:    23a00000     movcs    r0, #091c4:    e49df008     ldr    pc, [sp], #8000091c8 <__aeabi_dcmple>:91c8:    e52de008     str    lr, [sp, #-8]!91cc:    ebffffee     bl    918c <__aeabi_cdcmpeq>91d0:    93a00001     movls    r0, #191d4:    83a00000     movhi    r0, #091d8:    e49df008     ldr    pc, [sp], #8000091dc <__aeabi_dcmpge>:91dc:    e52de008     str    lr, [sp, #-8]!91e0:    ebffffe2     bl    9170 <__aeabi_cdrcmple>91e4:    93a00001     movls    r0, #191e8:    83a00000     movhi    r0, #091ec:    e49df008     ldr    pc, [sp], #8000091f0 <__aeabi_dcmpgt>:91f0:    e52de008     str    lr, [sp, #-8]!91f4:    ebffffdd     bl    9170 <__aeabi_cdrcmple>91f8:    33a00001     movcc    r0, #191fc:    23a00000     movcs    r0, #09200:    e49df008     ldr    pc, [sp], #800009204 <__aeabi_d2iz>:9204:    e1a02081     lsl    r2, r1, #19208:    e2922602     adds    r2, r2, #2097152    ; 0x200000920c:    2a00000c     bcs    9244 <__aeabi_d2iz+0x40>9210:    5a000009     bpl    923c <__aeabi_d2iz+0x38>9214:    e3e03e3e     mvn    r3, #992    ; 0x3e09218:    e0532ac2     subs    r2, r3, r2, asr #21921c:    9a00000a     bls    924c <__aeabi_d2iz+0x48>9220:    e1a03581     lsl    r3, r1, #119224:    e3833102     orr    r3, r3, #-2147483648    ; 0x800000009228:    e1833aa0     orr    r3, r3, r0, lsr #21922c:    e3110102     tst    r1, #-2147483648    ; 0x800000009230:    e1a00233     lsr    r0, r3, r29234:    12600000     rsbne    r0, r0, #09238:    e12fff1e     bx    lr923c:    e3a00000     mov    r0, #09240:    e12fff1e     bx    lr9244:    e1900601     orrs    r0, r0, r1, lsl #129248:    1a000002     bne    9258 <__aeabi_d2iz+0x54>924c:    e2110102     ands    r0, r1, #-2147483648    ; 0x800000009250:    03e00102     mvneq    r0, #-2147483648    ; 0x800000009254:    e12fff1e     bx    lr9258:    e3a00000     mov    r0, #0925c:    e12fff1e     bx    lr00009260 <__libc_csu_init>:9260:    e92d47f0     push    {r4, r5, r6, r7, r8, r9, sl, lr}9264:    e1a0a000     mov    sl, r09268:    e1a08001     mov    r8, r1926c:    e1a07002     mov    r7, r29270:    e59f40a8     ldr    r4, [pc, #168]    ; 9320 <__libc_csu_init+0xc0>9274:    ebfffc43     bl    8388 <_init>9278:    e59f10a4     ldr    r1, [pc, #164]    ; 9324 <__libc_csu_init+0xc4>927c:    e08f4004     add    r4, pc, r49280:    e08f0001     add    r0, pc, r19284:    e0649000     rsb    r9, r4, r09288:    e1b09149     asrs    r9, r9, #2928c:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}9290:    e3a06001     mov    r6, #19294:    e4943004     ldr    r3, [r4], #49298:    e1a0000a     mov    r0, sl929c:    e1a01008     mov    r1, r892a0:    e1a02007     mov    r2, r792a4:    e2495001     sub    r5, r9, #192a8:    e12fff33     blx    r392ac:    e1560009     cmp    r6, r992b0:    e0055006     and    r5, r5, r692b4:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}92b8:    e3550000     cmp    r5, #092bc:    0a000007     beq    92e0 <__libc_csu_init+0x80>92c0:    e494c004     ldr    ip, [r4], #492c4:    e1a0000a     mov    r0, sl92c8:    e1a01008     mov    r1, r892cc:    e1a02007     mov    r2, r792d0:    e3a06002     mov    r6, #292d4:    e12fff3c     blx    ip92d8:    e1560009     cmp    r6, r992dc:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}92e0:    e1a05004     mov    r5, r492e4:    e4953004     ldr    r3, [r5], #492e8:    e1a0000a     mov    r0, sl92ec:    e1a01008     mov    r1, r892f0:    e1a02007     mov    r2, r792f4:    e12fff33     blx    r392f8:    e2866002     add    r6, r6, #292fc:    e594c004     ldr    ip, [r4, #4]9300:    e1a0000a     mov    r0, sl9304:    e1a01008     mov    r1, r89308:    e1a02007     mov    r2, r7930c:    e12fff3c     blx    ip9310:    e1560009     cmp    r6, r99314:    e2854004     add    r4, r5, #49318:    1afffff0     bne    92e0 <__libc_csu_init+0x80>931c:    e8bd87f0     pop    {r4, r5, r6, r7, r8, r9, sl, pc}9320:    00008184     .word    0x000081849324:    00008184     .word    0x0000818400009328 <__libc_csu_fini>:9328:    e12fff1e     bx    lrDisassembly of section .fini:0000932c <_fini>:932c:    e92d4008     push    {r3, lr}9330:    e8bd8008     pop    {r3, pc}arm-none-linux-gnueabi-objdump -d soft.bin > objdump_soft.txt
/* arm-none-linux-gnueabi-objdump -d softfp.bin > objdump_softfp.txt */
softfp.bin:     file format elf32-littlearmDisassembly of section .init:00008388 <_init>:8388:    e92d4008     push    {r3, lr}838c:    eb000024     bl    8424 <call_gmon_start>8390:    e8bd8008     pop    {r3, pc}Disassembly of section .plt:00008394 <.plt>:8394:    e52de004     push    {lr}        ; (str lr, [sp, #-4]!)8398:    e59fe004     ldr    lr, [pc, #4]    ; 83a4 <_init+0x1c>839c:    e08fe00e     add    lr, pc, lr83a0:    e5bef008     ldr    pc, [lr, #8]!83a4:    0000865c     .word    0x0000865c83a8:    e28fc600     add    ip, pc, #0, 1283ac:    e28cca08     add    ip, ip, #8, 20    ; 0x800083b0:    e5bcf65c     ldr    pc, [ip, #1628]!    ; 0x65c83b4:    e28fc600     add    ip, pc, #0, 1283b8:    e28cca08     add    ip, ip, #8, 20    ; 0x800083bc:    e5bcf654     ldr    pc, [ip, #1620]!    ; 0x65483c0:    e28fc600     add    ip, pc, #0, 1283c4:    e28cca08     add    ip, ip, #8, 20    ; 0x800083c8:    e5bcf64c     ldr    pc, [ip, #1612]!    ; 0x64c83cc:    e28fc600     add    ip, pc, #0, 1283d0:    e28cca08     add    ip, ip, #8, 20    ; 0x800083d4:    e5bcf644     ldr    pc, [ip, #1604]!    ; 0x64483d8:    e28fc600     add    ip, pc, #0, 1283dc:    e28cca08     add    ip, ip, #8, 20    ; 0x800083e0:    e5bcf63c     ldr    pc, [ip, #1596]!    ; 0x63cDisassembly of section .text:000083e8 <_start>:83e8:    e3a0b000     mov    fp, #083ec:    e3a0e000     mov    lr, #083f0:    e49d1004     pop    {r1}        ; (ldr r1, [sp], #4)83f4:    e1a0200d     mov    r2, sp83f8:    e52d2004     push    {r2}        ; (str r2, [sp, #-4]!)83fc:    e52d0004     push    {r0}        ; (str r0, [sp, #-4]!)8400:    e59fc010     ldr    ip, [pc, #16]    ; 8418 <_start+0x30>8404:    e52dc004     push    {ip}        ; (str ip, [sp, #-4]!)8408:    e59f000c     ldr    r0, [pc, #12]    ; 841c <_start+0x34>840c:    e59f300c     ldr    r3, [pc, #12]    ; 8420 <_start+0x38>8410:    ebffffe7     bl    83b4 <_init+0x2c>8414:    ebffffef     bl    83d8 <_init+0x50>8418:    00008830     .word    0x00008830841c:    00008590     .word    0x000085908420:    00008768     .word    0x0000876800008424 <call_gmon_start>:8424:    e59f0014     ldr    r0, [pc, #20]    ; 8440 <call_gmon_start+0x1c>8428:    e59f2014     ldr    r2, [pc, #20]    ; 8444 <call_gmon_start+0x20>842c:    e08f3000     add    r3, pc, r08430:    e7933002     ldr    r3, [r3, r2]8434:    e3530000     cmp    r3, #08438:    012fff1e     bxeq    lr843c:    eaffffdf     b    83c0 <_init+0x38>8440:    000085cc     .word    0x000085cc8444:    00000020     .word    0x0000002000008448 <__do_global_dtors_aux>:8448:    e59f3010     ldr    r3, [pc, #16]    ; 8460 <__do_global_dtors_aux+0x18>844c:    e5d32000     ldrb    r2, [r3]8450:    e3520000     cmp    r2, #08454:    03a02001     moveq    r2, #18458:    05c32000     strbeq    r2, [r3]845c:    e12fff1e     bx    lr8460:    00010a2c     .word    0x00010a2c00008464 <frame_dummy>:8464:    e59f0020     ldr    r0, [pc, #32]    ; 848c <frame_dummy+0x28>8468:    e92d4008     push    {r3, lr}846c:    e5903000     ldr    r3, [r0]8470:    e3530000     cmp    r3, #08474:    08bd8008     popeq    {r3, pc}8478:    e59f3010     ldr    r3, [pc, #16]    ; 8490 <frame_dummy+0x2c>847c:    e3530000     cmp    r3, #08480:    08bd8008     popeq    {r3, pc}8484:    e12fff33     blx    r38488:    e8bd8008     pop    {r3, pc}848c:    00010904     .word    0x00010904...00008498 <ln>:8498:    e52db004     push    {fp}        ; (str fp, [sp, #-4]!)849c:    e28db000     add    fp, sp, #084a0:    e24dd034     sub    sp, sp, #52    ; 0x3484a4:    e14b03f4     strd    r0, [fp, #-52]    ; 0xffffffcc84a8:    e3a0300f     mov    r3, #1584ac:    e50b3018     str    r3, [fp, #-24]    ; 0xffffffe884b0:    ed1b6b0d     vldr    d6, [fp, #-52]    ; 0xffffffcc84b4:    ed9f7b33     vldr    d7, [pc, #204]    ; 8588 <ln+0xf0>84b8:    ee365b47     vsub.f64    d5, d6, d784bc:    ed1b6b0d     vldr    d6, [fp, #-52]    ; 0xffffffcc84c0:    ed9f7b30     vldr    d7, [pc, #192]    ; 8588 <ln+0xf0>84c4:    ee366b07     vadd.f64    d6, d6, d784c8:    ee857b06     vdiv.f64    d7, d5, d684cc:    ed0b7b09     vstr    d7, [fp, #-36]    ; 0xffffffdc84d0:    ed1b6b09     vldr    d6, [fp, #-36]    ; 0xffffffdc84d4:    ed1b7b09     vldr    d7, [fp, #-36]    ; 0xffffffdc84d8:    ee267b07     vmul.f64    d7, d6, d784dc:    ed0b7b0b     vstr    d7, [fp, #-44]    ; 0xffffffd484e0:    e51b3018     ldr    r3, [fp, #-24]    ; 0xffffffe884e4:    e1a03083     lsl    r3, r3, #184e8:    e2833001     add    r3, r3, #184ec:    e50b300c     str    r3, [fp, #-12]84f0:    e51b300c     ldr    r3, [fp, #-12]84f4:    ee073a90     vmov    s15, r384f8:    eeb86be7     vcvt.f64.s32    d6, s1584fc:    ed9f5b21     vldr    d5, [pc, #132]    ; 8588 <ln+0xf0>8500:    ee857b06     vdiv.f64    d7, d5, d68504:    ed0b7b05     vstr    d7, [fp, #-20]    ; 0xffffffec8508:    e51b3018     ldr    r3, [fp, #-24]    ; 0xffffffe8850c:    e50b3008     str    r3, [fp, #-8]8510:    ea00000f     b    8554 <ln+0xbc>8514:    e51b300c     ldr    r3, [fp, #-12]8518:    e2433002     sub    r3, r3, #2851c:    e50b300c     str    r3, [fp, #-12]8520:    e51b300c     ldr    r3, [fp, #-12]8524:    ee063a90     vmov    s13, r38528:    eeb87be6     vcvt.f64.s32    d7, s13852c:    ed9f5b15     vldr    d5, [pc, #84]    ; 8588 <ln+0xf0>8530:    ee856b07     vdiv.f64    d6, d5, d78534:    ed1b5b0b     vldr    d5, [fp, #-44]    ; 0xffffffd48538:    ed1b7b05     vldr    d7, [fp, #-20]    ; 0xffffffec853c:    ee257b07     vmul.f64    d7, d5, d78540:    ee367b07     vadd.f64    d7, d6, d78544:    ed0b7b05     vstr    d7, [fp, #-20]    ; 0xffffffec8548:    e51b3008     ldr    r3, [fp, #-8]854c:    e2433001     sub    r3, r3, #18550:    e50b3008     str    r3, [fp, #-8]8554:    e51b3008     ldr    r3, [fp, #-8]8558:    e3530000     cmp    r3, #0855c:    caffffec     bgt    8514 <ln+0x7c>8560:    ed1b7b09     vldr    d7, [fp, #-36]    ; 0xffffffdc8564:    ee376b07     vadd.f64    d6, d7, d78568:    ed1b7b05     vldr    d7, [fp, #-20]    ; 0xffffffec856c:    ee267b07     vmul.f64    d7, d6, d78570:    ec532b17     vmov    r2, r3, d78574:    e1a00002     mov    r0, r28578:    e1a01003     mov    r1, r3857c:    e28bd000     add    sp, fp, #08580:    e8bd0800     pop    {fp}8584:    e12fff1e     bx    lr8588:    00000000     .word    0x00000000858c:    3ff00000     .word    0x3ff0000000008590 <main>:8590:    e92d4800     push    {fp, lr}8594:    e28db004     add    fp, sp, #48598:    e24dd030     sub    sp, sp, #48    ; 0x30859c:    e3a03000     mov    r3, #085a0:    e50b3024     str    r3, [fp, #-36]    ; 0xffffffdc85a4:    e3a03000     mov    r3, #085a8:    e50b3020     str    r3, [fp, #-32]    ; 0xffffffe085ac:    e3a03000     mov    r3, #085b0:    e50b302c     str    r3, [fp, #-44]    ; 0xffffffd485b4:    e3a03000     mov    r3, #085b8:    e50b3028     str    r3, [fp, #-40]    ; 0xffffffd885bc:    e3a00002     mov    r0, #285c0:    e24b3024     sub    r3, fp, #36    ; 0x2485c4:    e1a01003     mov    r1, r385c8:    ebffff7f     bl    83cc <_init+0x44>85cc:    e28f3f53     add    r3, pc, #332    ; 0x14c85d0:    e1c320d0     ldrd    r2, [r3]85d4:    e14b21f4     strd    r2, [fp, #-20]    ; 0xffffffec85d8:    ea00001e     b    8658 <main+0xc8>85dc:    ed1b6b05     vldr    d6, [fp, #-20]    ; 0xffffffec85e0:    ed9f7b50     vldr    d7, [pc, #320]    ; 8728 <main+0x198>85e4:    ee266b07     vmul.f64    d6, d6, d785e8:    e28f3d05     add    r3, pc, #320    ; 0x14085ec:    e1c320d0     ldrd    r2, [r3]85f0:    ed1b7b05     vldr    d7, [fp, #-20]    ; 0xffffffec85f4:    ec432b15     vmov    d5, r2, r385f8:    ee355b47     vsub.f64    d5, d5, d785fc:    ee867b05     vdiv.f64    d7, d6, d58600:    ed0b7b07     vstr    d7, [fp, #-28]    ; 0xffffffe48604:    ed1b5b07     vldr    d5, [fp, #-28]    ; 0xffffffe48608:    ed9f6b4a     vldr    d6, [pc, #296]    ; 8738 <main+0x1a8>860c:    ee857b06     vdiv.f64    d7, d5, d68610:    ec510b17     vmov    r0, r1, d78614:    ebffff9f     bl    8498 <ln>8618:    ec410b15     vmov    d5, r0, r1861c:    ed9f6b47     vldr    d6, [pc, #284]    ; 8740 <main+0x1b0>8620:    ee857b06     vdiv.f64    d7, d5, d68624:    ed9f6b47     vldr    d6, [pc, #284]    ; 8748 <main+0x1b8>8628:    ee376b06     vadd.f64    d6, d7, d6862c:    ed9f5b3b     vldr    d5, [pc, #236]    ; 8720 <main+0x190>8630:    ee857b06     vdiv.f64    d7, d5, d68634:    ed9f6b45     vldr    d6, [pc, #276]    ; 8750 <main+0x1c0>8638:    ee377b46     vsub.f64    d7, d7, d6863c:    eefd6bc7     vcvt.s32.f64    s13, d78640:    ee163a90     vmov    r3, s138644:    e50b3008     str    r3, [fp, #-8]8648:    ed1b6b05     vldr    d6, [fp, #-20]    ; 0xffffffec864c:    ed9f7b33     vldr    d7, [pc, #204]    ; 8720 <main+0x190>8650:    ee367b07     vadd.f64    d7, d6, d78654:    ed0b7b05     vstr    d7, [fp, #-20]    ; 0xffffffec8658:    ed1b6b05     vldr    d6, [fp, #-20]    ; 0xffffffec865c:    ed9f7b33     vldr    d7, [pc, #204]    ; 8730 <main+0x1a0>8660:    eeb46bc7     vcmpe.f64    d6, d78664:    eef1fa10     vmrs    APSR_nzcv, fpscr8668:    53a03000     movpl    r3, #0866c:    43a03001     movmi    r3, #18670:    e20330ff     and    r3, r3, #255    ; 0xff8674:    e3530000     cmp    r3, #08678:    1affffd7     bne    85dc <main+0x4c>867c:    e3a00002     mov    r0, #28680:    e24b302c     sub    r3, fp, #44    ; 0x2c8684:    e1a01003     mov    r1, r38688:    ebffff4f     bl    83cc <_init+0x44>868c:    e59f10c4     ldr    r1, [pc, #196]    ; 8758 <main+0x1c8>8690:    e51b2024     ldr    r2, [fp, #-36]    ; 0xffffffdc8694:    e51b3020     ldr    r3, [fp, #-32]    ; 0xffffffe08698:    e1a00001     mov    r0, r1869c:    e1a01002     mov    r1, r286a0:    e1a02003     mov    r2, r386a4:    ebffff3f     bl    83a8 <_init+0x20>86a8:    e59f10ac     ldr    r1, [pc, #172]    ; 875c <main+0x1cc>86ac:    e51b202c     ldr    r2, [fp, #-44]    ; 0xffffffd486b0:    e51b3028     ldr    r3, [fp, #-40]    ; 0xffffffd886b4:    e1a00001     mov    r0, r186b8:    e1a01002     mov    r1, r286bc:    e1a02003     mov    r2, r386c0:    ebffff38     bl    83a8 <_init+0x20>86c4:    e59f0094     ldr    r0, [pc, #148]    ; 8760 <main+0x1d0>86c8:    e51b202c     ldr    r2, [fp, #-44]    ; 0xffffffd486cc:    e51b3024     ldr    r3, [fp, #-36]    ; 0xffffffdc86d0:    e0632002     rsb    r2, r3, r286d4:    e51b1028     ldr    r1, [fp, #-40]    ; 0xffffffd886d8:    e51b3020     ldr    r3, [fp, #-32]    ; 0xffffffe086dc:    e0633001     rsb    r3, r3, r186e0:    e1a01000     mov    r1, r086e4:    e1a00001     mov    r0, r186e8:    e1a01002     mov    r1, r286ec:    e1a02003     mov    r2, r386f0:    ebffff2c     bl    83a8 <_init+0x20>86f4:    e59f2068     ldr    r2, [pc, #104]    ; 8764 <main+0x1d4>86f8:    e51b3008     ldr    r3, [fp, #-8]86fc:    e58d3000     str    r3, [sp]8700:    e1a03002     mov    r3, r28704:    e1a00003     mov    r0, r38708:    e14b21d4     ldrd    r2, [fp, #-20]    ; 0xffffffec870c:    ebffff25     bl    83a8 <_init+0x20>8710:    e3a03000     mov    r3, #08714:    e1a00003     mov    r0, r38718:    e24bd004     sub    sp, fp, #4871c:    e8bd8800     pop    {fp, pc}8720:    00000000     .word    0x000000008724:    3ff00000     .word    0x3ff000008728:    00000000     .word    0x00000000872c:    40e6f300     .word    0x40e6f3008730:    00000000     .word    0x000000008734:    409c2000     .word    0x409c20008738:    00000000     .word    0x00000000873c:    40c38800     .word    0x40c388008740:    00000000     .word    0x000000008744:    40aedc00     .word    0x40aedc008748:    dcb5db83     .word    0xdcb5db83874c:    3f6b79e1     .word    0x3f6b79e18750:    66666666     .word    0x666666668754:    40711266     .word    0x407112668758:    00008840     .word    0x00008840875c:    0000885c     .word    0x0000885c8760:    00008878     .word    0x000088788764:    00008890     .word    0x0000889000008768 <__libc_csu_init>:8768:    e92d47f0     push    {r4, r5, r6, r7, r8, r9, sl, lr}876c:    e1a0a000     mov    sl, r08770:    e1a08001     mov    r8, r18774:    e1a07002     mov    r7, r28778:    e59f40a8     ldr    r4, [pc, #168]    ; 8828 <__libc_csu_init+0xc0>877c:    ebffff01     bl    8388 <_init>8780:    e59f10a4     ldr    r1, [pc, #164]    ; 882c <__libc_csu_init+0xc4>8784:    e08f4004     add    r4, pc, r48788:    e08f0001     add    r0, pc, r1878c:    e0649000     rsb    r9, r4, r08790:    e1b09149     asrs    r9, r9, #28794:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}8798:    e3a06001     mov    r6, #1879c:    e4943004     ldr    r3, [r4], #487a0:    e1a0000a     mov    r0, sl87a4:    e1a01008     mov    r1, r887a8:    e1a02007     mov    r2, r787ac:    e2495001     sub    r5, r9, #187b0:    e12fff33     blx    r387b4:    e1560009     cmp    r6, r987b8:    e0055006     and    r5, r5, r687bc:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}87c0:    e3550000     cmp    r5, #087c4:    0a000007     beq    87e8 <__libc_csu_init+0x80>87c8:    e494c004     ldr    ip, [r4], #487cc:    e1a0000a     mov    r0, sl87d0:    e1a01008     mov    r1, r887d4:    e1a02007     mov    r2, r787d8:    e3a06002     mov    r6, #287dc:    e12fff3c     blx    ip87e0:    e1560009     cmp    r6, r987e4:    08bd87f0     popeq    {r4, r5, r6, r7, r8, r9, sl, pc}87e8:    e1a05004     mov    r5, r487ec:    e4953004     ldr    r3, [r5], #487f0:    e1a0000a     mov    r0, sl87f4:    e1a01008     mov    r1, r887f8:    e1a02007     mov    r2, r787fc:    e12fff33     blx    r38800:    e2866002     add    r6, r6, #28804:    e594c004     ldr    ip, [r4, #4]8808:    e1a0000a     mov    r0, sl880c:    e1a01008     mov    r1, r88810:    e1a02007     mov    r2, r78814:    e12fff3c     blx    ip8818:    e1560009     cmp    r6, r9881c:    e2854004     add    r4, r5, #48820:    1afffff0     bne    87e8 <__libc_csu_init+0x80>8824:    e8bd87f0     pop    {r4, r5, r6, r7, r8, r9, sl, pc}8828:    00008170     .word    0x00008170882c:    00008170     .word    0x0000817000008830 <__libc_csu_fini>:8830:    e12fff1e     bx    lrDisassembly of section .fini:00008834 <_fini>:8834:    e92d4008     push    {r3, lr}8838:    e8bd8008     pop    {r3, pc}arm-none-linux-gnueabi-objdump -d softfp.bin > objdump_softfp.txt

分别执行bin文件:

可以看出相差一个数量级 硬浮点2.7ms, 软浮点29.5ms, 性能还是差距很大的!

2.驱动程序

代码如下:

#include <linux/module.h>
#include <linux/configfs.h>
#include <linux/init.h>
#include <linux/kernel.h>static double ln(double a)
{int N = 15;int k,nk;double x,xx,y;x = (a-1)/(a+1);xx = x*x;nk = 2*N+1;y = 1.0/nk;for(k=N;k>0;k--) {nk = nk - 2;y = 1.0/nk+xx*y;}return 2.0*x*y;
}static int hello_init(void)
{int t1, force2int;double Rt, Vadc;struct timespec time_start={0, 0},time_end={0, 0};double a;a = 3.9;a = a*a;printk("Hello,world! %f\n", a);printk("Hello,world! %d\n", a);printk("Hello,world! %d\n", (int)a);time_start = current_kernel_time();/* 根据采样电压反推热敏电阻的温度 */for(Vadc=1; Vadc<1800; Vadc++) {Rt = Vadc * 47000 / (1800-Vadc);t1=1/(ln(Rt/10000)/3950+1/298.15)-273.15;}time_end = current_kernel_time();printk("start time %ld s,%ld ns\n", time_start.tv_sec, time_start.tv_nsec);printk("end   time %ld s,%ld ns\n", time_end.tv_sec, time_end.tv_nsec);printk("duration:%ld s %ld ns\n", time_end.tv_sec-time_start.tv_sec, time_end.tv_nsec-time_start.tv_nsec);force2int = (int)Vadc;printk("%d = %d\n", force2int, t1);return 0;
}static void hello_exit(void)
{printk("Goodbye,cruel world!\n");
}module_init(hello_init);
module_exit(hello_exit);MODULE_AUTHOR("Vedic <FZKmxcz@163.com>");
MODULE_LICENSE("Dual BSD/GPL");

Makefile:

obj-m +=driver_test.o
driver_test-objs:= hello.oKDIR:=/home/fuzk/project/Prolin/firmware_4/build_dir/linux-sc9820_sc9820_pax/linux-3.10.65COMPILER=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-gcc
LD_PATH=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-ld
AR_PATH=/opt/toolchain/arm-2012.03/bin/arm-none-linux-gnueabi-ar
ARCH_TYPE=armccflags-y += -mfloat-abi=softfp
ldflags-y += -L/opt/toolchain/arm-2012.03/lib/gcc/arm-none-linux-gnueabi/4.6.3 -lgcc -static all:make CC=$(COMPILER) LD=$(LD_PATH) AR=$(AR_PATH) ARCH=$(ARCH_TYPE) -C $(KDIR)  M=$(PWD)  modulesclean:make CC=$(COMPILER) LD=$(LD_PATH) ARCH=$(ARCH_TYPE) -C $(KDIR)  M=$(PWD)  clean

由于是驱动所以得写个Makefile, 同时printk不支持打印浮点数格式, 只能先强制类型转换int再打印, 否则打印的数值是错的, 待会贴log就可以看出来

运行时间如下:

这里需要注意的是: 驱动在内核态, 进程不会被切出去(最多task_struct结构体的flag被标志NEED_RESHEDULE), 且只有中断才能打断其执行

而时间函数current_kernel_time()更新的步进应该是每10ms产生一个中断, 所以在中断前执行完读出来的时间戳是一样的, 或者在中断完成后读到

更新后的时间戳, 总而言之该时间函数精度为10ms, 测试几次出来发现要么0要么近10ms可以推测这段代码执行时间小于10ms!

反汇编发现汇编指令跟应用程序的硬浮点是一样的, 所以推测时间也在2.7ms左右

/* arm-none-linux-gnueabi-objdump -d driver_test.o > objdump_softfp.txt */
driver_test.o:     file format elf32-littlearmDisassembly of section .text:00000000 <init_module>:0:    e92d41f0     push    {r4, r5, r6, r7, r8, lr}4:    ed2d8b02     vpush    {d8}8:    e24dd010     sub    sp, sp, #16c:    e59f217c     ldr    r2, [pc, #380]    ; 190 <init_module+0x190>10:    e59f317c     ldr    r3, [pc, #380]    ; 194 <init_module+0x194>14:    e59f017c     ldr    r0, [pc, #380]    ; 198 <init_module+0x198>18:    ebfffffe     bl    0 <printk>1c:    ed9f8b4b     vldr    d8, [pc, #300]    ; 150 <init_module+0x150>20:    e59f2168     ldr    r2, [pc, #360]    ; 190 <init_module+0x190>24:    e59f3168     ldr    r3, [pc, #360]    ; 194 <init_module+0x194>28:    e59f016c     ldr    r0, [pc, #364]    ; 19c <init_module+0x19c>2c:    ebfffffe     bl    0 <printk>30:    e3a0100f     mov    r1, #1534:    e59f0160     ldr    r0, [pc, #352]    ; 19c <init_module+0x19c>38:    ebfffffe     bl    0 <printk>3c:    e1a0000d     mov    r0, sp40:    ebfffffe     bl    0 <current_kernel_time>44:    e59d7000     ldr    r7, [sp]48:    e59d5004     ldr    r5, [sp, #4]4c:    eeb02b48     vmov.f64    d2, d850:    ea000021     b    dc <init_module+0xdc>54:    ed9f0b3f     vldr    d0, [pc, #252]    ; 158 <init_module+0x158>58:    ee366b48     vsub.f64    d6, d6, d85c:    ed9f7b3f     vldr    d7, [pc, #252]    ; 160 <init_module+0x160>60:    e3a0301f     mov    r3, #3164:    ed9f4b3f     vldr    d4, [pc, #252]    ; 168 <init_module+0x168>68:    ee280b00     vmul.f64    d0, d8, d06c:    ee806b06     vdiv.f64    d6, d0, d670:    ee866b07     vdiv.f64    d6, d6, d774:    ee367b42     vsub.f64    d7, d6, d278:    ee366b02     vadd.f64    d6, d6, d27c:    ee876b06     vdiv.f64    d6, d7, d680:    ee265b06     vmul.f64    d5, d6, d684:    e2433002     sub    r3, r3, #288:    ed9f3b30     vldr    d3, [pc, #192]    ; 150 <init_module+0x150>8c:    e3530001     cmp    r3, #190:    ee013a10     vmov    s2, r394:    eeb87bc1     vcvt.f64.s32    d7, s298:    ee827b07     vdiv.f64    d7, d2, d79c:    eeb01b47     vmov.f64    d1, d7a0:    ee051b04     vmla.f64    d1, d5, d4a4:    eeb04b41     vmov.f64    d4, d1a8:    1afffff5     bne    84 <init_module+0x84>ac:    ee360b06     vadd.f64    d0, d6, d6b0:    ed9f6b2e     vldr    d6, [pc, #184]    ; 170 <init_module+0x170>b4:    ed9f5b2f     vldr    d5, [pc, #188]    ; 178 <init_module+0x178>b8:    ee207b01     vmul.f64    d7, d0, d1bc:    ee877b06     vdiv.f64    d7, d7, d6c0:    ed9f6b2e     vldr    d6, [pc, #184]    ; 180 <init_module+0x180>c4:    ee374b05     vadd.f64    d4, d7, d5c8:    ee834b04     vdiv.f64    d4, d3, d4cc:    ee347b46     vsub.f64    d7, d4, d6d0:    eefd1bc7     vcvt.s32.f64    s3, d7d4:    ee114a90     vmov    r4, s3d8:    ee388b03     vadd.f64    d8, d8, d3dc:    ed9f6b29     vldr    d6, [pc, #164]    ; 188 <init_module+0x188>e0:    eeb48bc6     vcmpe.f64    d8, d6e4:    eef1fa10     vmrs    APSR_nzcv, fpscre8:    4affffd9     bmi    54 <init_module+0x54>ec:    e28d0008     add    r0, sp, #8f0:    ebfffffe     bl    0 <current_kernel_time>f4:    e59d8008     ldr    r8, [sp, #8]f8:    e59d600c     ldr    r6, [sp, #12]fc:    e1a01007     mov    r1, r7100:    e1a02005     mov    r2, r5104:    e59f0094     ldr    r0, [pc, #148]    ; 1a0 <init_module+0x1a0>108:    ebfffffe     bl    0 <printk>10c:    e1a01008     mov    r1, r8110:    e1a02006     mov    r2, r6114:    e59f0088     ldr    r0, [pc, #136]    ; 1a4 <init_module+0x1a4>118:    ebfffffe     bl    0 <printk>11c:    e0671008     rsb    r1, r7, r8120:    e0652006     rsb    r2, r5, r6124:    e59f007c     ldr    r0, [pc, #124]    ; 1a8 <init_module+0x1a8>128:    ebfffffe     bl    0 <printk>12c:    eefd3bc8     vcvt.s32.f64    s7, d8130:    e1a02004     mov    r2, r4134:    e59f0070     ldr    r0, [pc, #112]    ; 1ac <init_module+0x1ac>138:    ee131a90     vmov    r1, s713c:    ebfffffe     bl    0 <printk>140:    e3a00000     mov    r0, #0144:    e28dd010     add    sp, sp, #16148:    ecbd8b02     vpop    {d8}14c:    e8bd81f0     pop    {r4, r5, r6, r7, r8, pc}150:    00000000     .word    0x00000000154:    3ff00000     .word    0x3ff00000158:    00000000     .word    0x0000000015c:    40e6f300     .word    0x40e6f300160:    00000000     .word    0x00000000164:    40c38800     .word    0x40c38800168:    08421084     .word    0x0842108416c:    3fa08421     .word    0x3fa08421170:    00000000     .word    0x00000000174:    40aedc00     .word    0x40aedc00178:    dcb5db83     .word    0xdcb5db8317c:    3f6b79e1     .word    0x3f6b79e1180:    66666666     .word    0x66666666184:    40711266     .word    0x40711266188:    00000000     .word    0x0000000018c:    409c2000     .word    0x409c2000190:    1eb851eb     .word    0x1eb851eb194:    402e6b85     .word    0x402e6b85198:    00000000     .word    0x0000000019c:    00000011     .word    0x000000111a0:    00000022     .word    0x000000221a4:    0000003b     .word    0x0000003b1a8:    00000054     .word    0x000000541ac:    0000006b     .word    0x0000006b000001b0 <cleanup_module>:1b0:    e59f0000     ldr    r0, [pc]    ; 1b8 <cleanup_module+0x8>1b4:    eafffffe     b    0 <printk>1b8:    00000074     .word    0x000000741bc:    e320f000     nop    {0}arm-none-linux-gnueabi-objdump -d driver_test.o > objdump_softfp.txt

Makefile修改浮点为软浮点时候, 链接警告, 缺少上面说的函数, 可以我已经链接了libgcc.a, 不知道为何还是警告找不到, 因此就没深究了(怀疑这个库是应用专用)

ccflags-y += -mfloat-abi=soft
链接警告:
WARNING: "__aeabi_d2iz" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_i2d" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_dsub" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_dadd" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_dmul" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_ddiv" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined!
WARNING: "__aeabi_dcmplt" [/home/fuzk/test/bokeyuan/float/driver/driver_test.ko] undefined

深入理解Linux内核使用浮点运算问题相关推荐

  1. 深入理解Linux内核之内存寻址

    说明: 本文基于第三版<深入理解 Linux 内核>,该部分以 80x86 处理器为基准进行介绍,并且略过了原文中详细介绍32位扩展分页部分. https://xcraft.tech/20 ...

  2. [转]深入理解linux内核list_head

    http://blog.chinaunix.net/uid-27122224-id-3277511.html 深入理解linux内核list_head的实现 2012-07-17 17:37:01 分 ...

  3. 《深入理解Linux内核》 读书笔记

    深入理解Linux内核 读书笔记 一.概论 操作系统基本概念 多用户系统 允许多个用户登录系统,不同用户之间的有私有的空间 用户和组 每个用于属于一个组,组的权限和其他人的权限,和拥有者的权限不一样. ...

  4. 深入理解Linux内核通知链(Notifier)

    数据结构 内核使用struct notifier_block结构代表一个notifier typedef int (*notifier_fn_t)(struct notifier_block *nb, ...

  5. 深入理解Linux内核-第3版 译者序、前言、目录 内核2.6.11

    一.译者序 Linux是一个全新的世界,世界意味着博大精深,而新或许代表对旧的割舍和扬弃,加在一起,就是要我们在割舍和扬弃的同时还要积累知识到博大精深的地步,这容易做到吗?是的,这不容易做到.Gera ...

  6. 深入理解Linux内核第3版--笔记-1.pdf

    深入理解Linux内核第3版.pdf         Understanding the Linux Kernel, 3rd Edition Preface    The Audience for T ...

  7. 深入理解Linux内核之主调度器(下)

    4.进程上下文切换 接前文:深入理解Linux内核之主调度器(上) 前面选择了一个合适进程作为下一个进程,接下来做重要的上下文切换动作,来保存上一个进程的"上下文"恢复下一个进程的 ...

  8. 深入理解LINUX内核(影印版第3版)》的笔记

    书名: 深入理解LINUX内核(影印版第3版) 作者: Daniel P.Bovet/Marco Cesati 副标题: Understanding the Linux Kernel 页数: 923 ...

  9. 深入理解Linux内核 学习Linux内核的一些建议及书记推荐

    深入理解Linux内核 学习Linux内核的一些建议_华清远见教育集团 经典书籍 待到山花烂漫时,还是那些经典在微笑. 有关内核的书籍可以用汗牛充栋来形容,不过只有一些经典的神作经住了考验.首先是5本 ...

最新文章

  1. go语言实现排序算法
  2. Class.getResource()与Class.getClassLoader().getResource()解析
  3. linux date抖动,一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  4. filezilla 设置服务器_java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)...
  5. 懒惰的JSF Primefaces数据表分页–第2部分
  6. python的email模块_python email 模块
  7. 代码更换ui图片_用技术的方式,在UI设计稿中设置随机码,保证高清
  8. Linux防火墙配置入门
  9. 在VC中使用Windows管道技术编程
  10. python+selenium自动化测试环境搭建步骤(selenium环境搭建)-绝不浪费您的时间
  11. 非线性薛定谔方程_现有光纤网络正被推向极限,未来怎么办?薛定谔波动方程来帮忙...
  12. 2019秋招cv岗求职心得
  13. “领域知识图谱的构建与应用”讲座学习笔记
  14. 产生唯一的id(idworker工具类)
  15. Chrome截取长屏图片
  16. 安卓开发视频教程!十多家大厂Android面试真题锦集干货整理,写给正在求职的安卓开发
  17. 一阶线性差分方程通项公式求解
  18. 什么是WinSxS?
  19. cv2的简单使用(持续更新)
  20. fooview辅助功能 shell_列出所有Bash Shell内置命令的方法示例

热门文章

  1. SSM项目跨域访问处理(含白名单处理)
  2. Sqlite常用表查询语句
  3. 伽马变换的原理以及python实现
  4. 如何保存或打印出清晰的域名证书
  5. Matlab逆向归纳法,6.完全信息动态博弈—逆向归纳法和子博弈完美均衡.ppt
  6. WIN10 Outlook 2013 pst/ost邮件数据文件迁移
  7. Flutter之extension
  8. 更改文字颜色为红色HTMl语言,红色字体CSS_设置html字体颜色为红色
  9. 菁英杯计算机能力大赛试题,“第四届全国大学生计算机系统能力培养大赛(龙芯杯)”决赛结果...
  10. 系统错误null是什么意思_为什么NULL是错误的?