文本比较pmtest3 4(ldt gate)

2024-04-11 15:08
文章标签 比较 文本 gate ldt pmtest3

本文主要是介绍文本比较pmtest3 4(ldt gate),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文本比较pmtest2 pmtest3 (进阶和ldt)
已生成: 2010-4-7 22:44:31
   
模式: 全部  
左侧文件: C:Documents and Settings66_不思进取桌面下载os6631767673chapter3chapter3dpmtest4.asm  
右侧文件: C:Documents and Settings66_不思进取桌面下载os6631767673chapter3chapter3cpmtest3.asm  
; ===========================================; ==========================================
; pmtest4.asm<>; pmtest3.asm
; 编译方法:nasm pmtest4.asm -o pmtest4.com ; 编译方法:nasm pmtest3.asm -o pmtest3.com
; ===========================================; ==========================================
   
%include        "pm.inc"        ; 常量, 宏, 以及一些说明 %include        "pm.inc"        ; 常量, 宏, 以及一些说明
   
org        0100h org        0100h
        jmp        LABEL_BEGIN         jmp        LABEL_BEGIN
   
[SECTION .gdt] [SECTION .gdt]
; GDT ; GDT
;                           段基址,       段界限     , 属性<>;                                         段基址,       段界限     , 属性
LABEL_GDT:            Descriptor 0,                 0, 0       ; 空描述符 LABEL_GDT:         Descriptor       0,                 0, 0             ; 空描述符
LABEL_DESC_NORMAL:    Descriptor 0,          0ffffh, DA_DRW    ; Normal 描述符 LABEL_DESC_NORMAL: Descriptor       0,            0ffffh, DA_DRW        ; Normal 描述符
LABEL_DESC_CODE32:    Descriptor 0,  SegCode32Len-1, DA_C+DA_32; 非一致代码段,32 LABEL_DESC_CODE32: Descriptor       0,  SegCode32Len - 1, DA_C + DA_32        ; 非一致代码段, 32
LABEL_DESC_CODE16:    Descriptor 0,          0ffffh, DA_C      ; 非一致代码段,16 LABEL_DESC_CODE16: Descriptor       0,            0ffffh, DA_C                ; 非一致代码段, 16
LABEL_DESC_CODE_DEST: Descriptor 0,SegCodeDestLen-1, DA_C+DA_32; 非一致代码段,32  
LABEL_DESC_DATA:      Descriptor 0,       DataLen-1, DA_DRW    ; Data LABEL_DESC_DATA:   Descriptor       0,       DataLen - 1, DA_DRW+DA_DPL1        ; Data
LABEL_DESC_STACK:     Descriptor 0,      TopOfStack, DA_DRWA+DA_32;Stack, 32 位 LABEL_DESC_STACK:  Descriptor       0,        TopOfStack, DA_DRWA + DA_32; Stack, 32 位
LABEL_DESC_LDT:       Descriptor 0,        LDTLen-1, DA_LDT    ; LDT LABEL_DESC_LDT:    Descriptor       0,        LDTLen - 1, DA_LDT        ; LDT
LABEL_DESC_VIDEO:     Descriptor 0B8000h,    0ffffh, DA_DRW    ; 显存首地址 LABEL_DESC_VIDEO:  Descriptor 0B8000h,            0ffffh, DA_DRW        ; 显存首地址
   
;                                目标选择子,偏移,DCount, 属性  
LABEL_CALL_GATE_TEST: Gate SelectorCodeDest,   0,     0, DA_386CGate+DA_DPL0  
; GDT 结束=; GDT 结束
   
GdtLen                equ        $ - LABEL_GDT        ; GDT长度 GdtLen                equ        $ - LABEL_GDT        ; GDT长度
GdtPtr                dw        GdtLen - 1        ; GDT界限 GdtPtr                dw        GdtLen - 1        ; GDT界限
                dd        0                ; GDT基地址                 dd        0                ; GDT基地址
   
; GDT 选择子 ; GDT 选择子
SelectorNormal                equ        LABEL_DESC_NORMAL        - LABEL_GDT SelectorNormal                equ        LABEL_DESC_NORMAL        - LABEL_GDT
SelectorCode32                equ        LABEL_DESC_CODE32        - LABEL_GDT SelectorCode32                equ        LABEL_DESC_CODE32        - LABEL_GDT
SelectorCode16                equ        LABEL_DESC_CODE16        - LABEL_GDT SelectorCode16                equ        LABEL_DESC_CODE16        - LABEL_GDT
SelectorCodeDest        equ        LABEL_DESC_CODE_DEST        - LABEL_GDT+- 
SelectorData                equ        LABEL_DESC_DATA                - LABEL_GDT=SelectorData                equ        LABEL_DESC_DATA                - LABEL_GDT
SelectorStack                equ        LABEL_DESC_STACK        - LABEL_GDT SelectorStack                equ        LABEL_DESC_STACK        - LABEL_GDT
SelectorLDT                equ        LABEL_DESC_LDT                - LABEL_GDT SelectorLDT                equ        LABEL_DESC_LDT                - LABEL_GDT
SelectorVideo                equ        LABEL_DESC_VIDEO        - LABEL_GDT SelectorVideo                equ        LABEL_DESC_VIDEO        - LABEL_GDT
 +- 
SelectorCallGateTest        equ        LABEL_CALL_GATE_TEST        - LABEL_GDT  
; END of [SECTION .gdt]=; END of [SECTION .gdt]
   
[SECTION .data1]         ; 数据段 [SECTION .data1]         ; 数据段
ALIGN        32 ALIGN        32
[BITS        32] [BITS        32]
LABEL_DATA: LABEL_DATA:
SPValueInRealMode        dw        0 SPValueInRealMode        dw        0
; 字符串 ; 字符串
PMMessage:                db        "In Protect Mode now. ^-^", 0        ; 进入保护模式后显示此字符串 PMMessage:                db        "In Protect Mode now. ^-^", 0        ; 进入保护模式后显示此字符串
OffsetPMMessage                equ        PMMessage - $$ OffsetPMMessage                equ        PMMessage - $$
StrTest:                db        "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0 StrTest:                db        "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0
OffsetStrTest                equ        StrTest - $$ OffsetStrTest                equ        StrTest - $$
DataLen                        equ        $ - LABEL_DATA DataLen                        equ        $ - LABEL_DATA
; END of [SECTION .data1] ; END of [SECTION .data1]
   
   
; 全局堆栈段 ; 全局堆栈段
[SECTION .gs] [SECTION .gs]
ALIGN        32 ALIGN        32
[BITS        32] [BITS        32]
LABEL_STACK: LABEL_STACK:
        times 512 db 0         times 512 db 0
   
TopOfStack        equ        $ - LABEL_STACK - 1 TopOfStack        equ        $ - LABEL_STACK - 1
   
; END of [SECTION .gs] ; END of [SECTION .gs]
   
   
[SECTION .s16] [SECTION .s16]
[BITS        16] [BITS        16]
LABEL_BEGIN: LABEL_BEGIN:
        mov        ax, cs         mov        ax, cs
        mov        ds, ax         mov        ds, ax
        mov        es, ax         mov        es, ax
        mov        ss, ax         mov        ss, ax
        mov        sp, 0100h         mov        sp, 0100h
   
        mov        [LABEL_GO_BACK_TO_REAL+3], ax         mov        [LABEL_GO_BACK_TO_REAL+3], ax
        mov        [SPValueInRealMode], sp         mov        [SPValueInRealMode], sp
   
        ; 初始化 16 位代码段描述符         ; 初始化 16 位代码段描述符
        mov        ax, cs         mov        ax, cs
        movzx        eax, ax         movzx        eax, ax
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_SEG_CODE16         add        eax, LABEL_SEG_CODE16
        mov        word [LABEL_DESC_CODE16 + 2], ax         mov        word [LABEL_DESC_CODE16 + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_DESC_CODE16 + 4], al         mov        byte [LABEL_DESC_CODE16 + 4], al
        mov        byte [LABEL_DESC_CODE16 + 7], ah         mov        byte [LABEL_DESC_CODE16 + 7], ah
   
        ; 初始化 32 位代码段描述符         ; 初始化 32 位代码段描述符
        xor        eax, eax         xor        eax, eax
        mov        ax, cs         mov        ax, cs
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_SEG_CODE32         add        eax, LABEL_SEG_CODE32
        mov        word [LABEL_DESC_CODE32 + 2], ax         mov        word [LABEL_DESC_CODE32 + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_DESC_CODE32 + 4], al         mov        byte [LABEL_DESC_CODE32 + 4], al
        mov        byte [LABEL_DESC_CODE32 + 7], ah         mov        byte [LABEL_DESC_CODE32 + 7], ah
 +- 
        ; 初始化测试调用门的代码段描述符  
        xor        eax, eax  
        mov        ax, cs  
        shl        eax, 4  
        add        eax, LABEL_SEG_CODE_DEST  
        mov        word [LABEL_DESC_CODE_DEST + 2], ax  
        shr        eax, 16  
        mov        byte [LABEL_DESC_CODE_DEST + 4], al  
        mov        byte [LABEL_DESC_CODE_DEST + 7], ah  
 = 
        ; 初始化数据段描述符         ; 初始化数据段描述符
        xor        eax, eax         xor        eax, eax
        mov        ax, ds         mov        ax, ds
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_DATA         add        eax, LABEL_DATA
        mov        word [LABEL_DESC_DATA + 2], ax         mov        word [LABEL_DESC_DATA + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_DESC_DATA + 4], al         mov        byte [LABEL_DESC_DATA + 4], al
        mov        byte [LABEL_DESC_DATA + 7], ah         mov        byte [LABEL_DESC_DATA + 7], ah
   
        ; 初始化堆栈段描述符         ; 初始化堆栈段描述符
        xor        eax, eax         xor        eax, eax
        mov        ax, ds         mov        ax, ds
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_STACK         add        eax, LABEL_STACK
        mov        word [LABEL_DESC_STACK + 2], ax         mov        word [LABEL_DESC_STACK + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_DESC_STACK + 4], al         mov        byte [LABEL_DESC_STACK + 4], al
        mov        byte [LABEL_DESC_STACK + 7], ah         mov        byte [LABEL_DESC_STACK + 7], ah
   
        ; 初始化 LDT 在 GDT 中的描述符         ; 初始化 LDT 在 GDT 中的描述符
        xor        eax, eax         xor        eax, eax
        mov        ax, ds         mov        ax, ds
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_LDT         add        eax, LABEL_LDT
        mov        word [LABEL_DESC_LDT + 2], ax         mov        word [LABEL_DESC_LDT + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_DESC_LDT + 4], al         mov        byte [LABEL_DESC_LDT + 4], al
        mov        byte [LABEL_DESC_LDT + 7], ah         mov        byte [LABEL_DESC_LDT + 7], ah
   
        ; 初始化 LDT 中的描述符         ; 初始化 LDT 中的描述符
        xor        eax, eax         xor        eax, eax
        mov        ax, ds         mov        ax, ds
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_CODE_A         add        eax, LABEL_CODE_A
        mov        word [LABEL_LDT_DESC_CODEA + 2], ax         mov        word [LABEL_LDT_DESC_CODEA + 2], ax
        shr        eax, 16         shr        eax, 16
        mov        byte [LABEL_LDT_DESC_CODEA + 4], al         mov        byte [LABEL_LDT_DESC_CODEA + 4], al
        mov        byte [LABEL_LDT_DESC_CODEA + 7], ah         mov        byte [LABEL_LDT_DESC_CODEA + 7], ah
   
        ; 为加载 GDTR 作准备         ; 为加载 GDTR 作准备
        xor        eax, eax         xor        eax, eax
        mov        ax, ds         mov        ax, ds
        shl        eax, 4         shl        eax, 4
        add        eax, LABEL_GDT                ; eax <- gdt 基地址         add        eax, LABEL_GDT                ; eax <- gdt 基地址
        mov        dword [GdtPtr + 2], eax        ; [GdtPtr + 2] <- gdt 基地址         mov        dword [GdtPtr + 2], eax        ; [GdtPtr + 2] <- gdt 基地址
   
        ; 加载 GDTR         ; 加载 GDTR
        lgdt        [GdtPtr]         lgdt        [GdtPtr]
   
        ; 关中断         ; 关中断
        cli         cli
   
        ; 打开地址线A20         ; 打开地址线A20
        in        al, 92h         in        al, 92h
        or        al, 00000010b         or        al, 00000010b
        out        92h, al         out        92h, al
   
        ; 准备切换到保护模式         ; 准备切换到保护模式
        mov        eax, cr0         mov        eax, cr0
        or        eax, 1         or        eax, 1
        mov        cr0, eax         mov        cr0, eax
   
        ; 真正进入保护模式         ; 真正进入保护模式
        jmp        dword SelectorCode32:0        ; 执行这一句会把 SelectorCode32 装入 cs, 并跳转到 Code32Selector:0  处         jmp        dword SelectorCode32:0        ; 执行这一句会把 SelectorCode32 装入 cs, 并跳转到 Code32Selector:0  处
   
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
LABEL_REAL_ENTRY:                ; 从保护模式跳回到实模式就到了这里 LABEL_REAL_ENTRY:                ; 从保护模式跳回到实模式就到了这里
        mov        ax, cs         mov        ax, cs
        mov        ds, ax         mov        ds, ax
        mov        es, ax         mov        es, ax
        mov        ss, ax         mov        ss, ax
   
        mov        sp, [SPValueInRealMode]         mov        sp, [SPValueInRealMode]
   
        in        al, 92h                ; ┓         in        al, 92h                ; ┓
        and        al, 11111101b        ; ┣ 关闭 A20 地址线         and        al, 11111101b        ; ┣ 关闭 A20 地址线
        out        92h, al                ; ┛         out        92h, al                ; ┛
   
        sti                        ; 开中断         sti                        ; 开中断
   
        mov        ax, 4c00h        ; ┓         mov        ax, 4c00h        ; ┓
        int        21h                ; ┛回到 DOS         int        21h                ; ┛回到 DOS
; END of [SECTION .s16] ; END of [SECTION .s16]
   
   
[SECTION .s32]; 32 位代码段. 由实模式跳入. [SECTION .s32]; 32 位代码段. 由实模式跳入.
[BITS        32] [BITS        32]
   
LABEL_SEG_CODE32: LABEL_SEG_CODE32:
        mov        ax, SelectorData         mov        ax, SelectorData
        mov        ds, ax                        ; 数据段选择子         mov        ds, ax                        ; 数据段选择子
        mov        ax, SelectorVideo         mov        ax, SelectorVideo
        mov        gs, ax                        ; 视频段选择子         mov        gs, ax                        ; 视频段选择子
   
        mov        ax, SelectorStack         mov        ax, SelectorStack
        mov        ss, ax                        ; 堆栈段选择子         mov        ss, ax                        ; 堆栈段选择子
   
        mov        esp, TopOfStack         mov        esp, TopOfStack
   
   
        ; 下面显示一个字符串         ; 下面显示一个字符串
        mov        ah, 0Ch                        ; 0000: 黑底    1100: 红字         mov        ah, 0Ch                        ; 0000: 黑底    1100: 红字
        xor        esi, esi         xor        esi, esi
        xor        edi, edi         xor        edi, edi
        mov        esi, OffsetPMMessage        ; 源数据偏移         mov        esi, OffsetPMMessage        ; 源数据偏移
        mov        edi, (80 * 10 + 0) * 2        ; 目的数据偏移。屏幕第 10 行, 第 0 列。         mov        edi, (80 * 10 + 0) * 2        ; 目的数据偏移。屏幕第 10 行, 第 0 列。
        cld         cld
.1: .1:
        lodsb         lodsb
        test        al, al         test        al, al
        jz        .2         jz        .2
        mov        [gs:edi], ax         mov        [gs:edi], ax
        add        edi, 2         add        edi, 2
        jmp        .1         jmp        .1
.2:        ; 显示完毕 .2:        ; 显示完毕
   
        call        DispReturn         call        DispReturn
   
        ; 测试调用门(无特权级变换),将打印字母 'C'+- 
        call        SelectorCallGateTest:0  
        ;call        SelectorCodeDest:0  
   
        ; Load LDT=        ; Load LDT
        mov        ax, SelectorLDT         mov        ax, SelectorLDT
        lldt        ax         lldt        ax
   
        jmp        SelectorLDTCodeA:0        ; 跳入局部任务,将打印字母 'L'。<>        jmp        SelectorLDTCodeA:0        ; 跳入局部任务
 = 
; ------------------------------------------------------------------------ ; ------------------------------------------------------------------------
DispReturn: DispReturn:
        push        eax         push        eax
        push        ebx         push        ebx
        mov        eax, edi         mov        eax, edi
        mov        bl, 160         mov        bl, 160
        div        bl         div        bl
        and        eax, 0FFh         and        eax, 0FFh
        inc        eax         inc        eax
        mov        bl, 160         mov        bl, 160
        mul        bl         mul        bl
        mov        edi, eax         mov        edi, eax
        pop        ebx         pop        ebx
        pop        eax         pop        eax
   
        ret         ret
; DispReturn 结束--------------------------------------------------------- ; DispReturn 结束---------------------------------------------------------
   
SegCode32Len        equ        $ - LABEL_SEG_CODE32 SegCode32Len        equ        $ - LABEL_SEG_CODE32
; END of [SECTION .s32] ; END of [SECTION .s32]
 +- 
   
[SECTION .sdest]; 调用门目标段  
[BITS        32]  
   
LABEL_SEG_CODE_DEST:  
        ;jmp        $  
        mov        ax, SelectorVideo  
        mov        gs, ax                        ; 视频段选择子(目的)  
   
        mov        edi, (80 * 12 + 0) * 2        ; 屏幕第 12 行,  0 列。  
        mov        ah, 0Ch                        ; 0000: 黑底    1100: 红字  
        mov        al, 'C'  
        mov        [gs:edi], ax  
   
        retf  
   
SegCodeDestLen        equ        $ - LABEL_SEG_CODE_DEST  
; END of [SECTION .sdest]  
 = 
   
; 16 位代码段. 由 32 位代码段跳入, 跳出后到实模式 ; 16 位代码段. 由 32 位代码段跳入, 跳出后到实模式
[SECTION .s16code] [SECTION .s16code]
ALIGN        32 ALIGN        32
[BITS        16] [BITS        16]
LABEL_SEG_CODE16: LABEL_SEG_CODE16:
        ; 跳回实模式:         ; 跳回实模式:
        mov        ax, SelectorNormal         mov        ax, SelectorNormal
        mov        ds, ax         mov        ds, ax
        mov        es, ax         mov        es, ax
        mov        fs, ax         mov        fs, ax
        mov        gs, ax         mov        gs, ax
        mov        ss, ax         mov        ss, ax
   
        mov        eax, cr0         mov        eax, cr0
        and        al, 11111110b         and        al, 11111110b
        mov        cr0, eax         mov        cr0, eax
   
LABEL_GO_BACK_TO_REAL: LABEL_GO_BACK_TO_REAL:
        jmp        0:LABEL_REAL_ENTRY        ; 段地址会在程序开始处被设置成正确的值         jmp        0:LABEL_REAL_ENTRY        ; 段地址会在程序开始处被设置成正确的值
   
Code16Len        equ        $ - LABEL_SEG_CODE16 Code16Len        equ        $ - LABEL_SEG_CODE16
   
; END of [SECTION .s16code] ; END of [SECTION .s16code]
   
   
; LDT ; LDT
[SECTION .ldt] [SECTION .ldt]
ALIGN        32 ALIGN        32
LABEL_LDT: LABEL_LDT:
;                                         段基址       段界限     ,  属性<>;                            段基址       段界限      属性
LABEL_LDT_DESC_CODEA:        Descriptor              0,     CodeALen - 1,   DA_C + DA_32        ; Code, 32 位 LABEL_LDT_DESC_CODEA: Descriptor 0, CodeALen - 1, DA_C + DA_32 ; Code, 32 位
 = 
LDTLen                equ        $ - LABEL_LDT LDTLen                equ        $ - LABEL_LDT
   
; LDT 选择子 ; LDT 选择子
SelectorLDTCodeA        equ        LABEL_LDT_DESC_CODEA        - LABEL_LDT + SA_TIL SelectorLDTCodeA        equ        LABEL_LDT_DESC_CODEA        - LABEL_LDT + SA_TIL
; END of [SECTION .ldt] ; END of [SECTION .ldt]
   
   
 ; CodeA (LDT, 32 位代码段)  ; CodeA (LDT, 32 位代码段)
[SECTION .la] [SECTION .la]
ALIGN        32 ALIGN        32
[BITS        32] [BITS        32]
LABEL_CODE_A: LABEL_CODE_A:
        mov        ax, SelectorVideo         mov        ax, SelectorVideo
        mov        gs, ax                        ; 视频段选择子(目的)         mov        gs, ax                        ; 视频段选择子(目的)
   
        mov        edi, (80 * 13 + 0) * 2        ; 屏幕第 13 行, 第 0 列。<>        mov        edi, (80 * 12 + 0) * 2        ; 屏幕第 10 行, 第 0 列。
        mov        ah, 0Ch                        ; 0000: 黑底    1100: 红字=        mov        ah, 0Ch                        ; 0000: 黑底    1100: 红字
        mov        al, 'L'         mov        al, 'L'
        mov        [gs:edi], ax         mov        [gs:edi], ax
   
        ; 准备经由16位代码段跳回实模式         ; 准备经由16位代码段跳回实模式
        jmp        SelectorCode16:0         jmp        SelectorCode16:0
CodeALen        equ        $ - LABEL_CODE_A CodeALen        equ        $ - LABEL_CODE_A
; END of [SECTION .la] ; END of [SECTION .la]

这篇关于文本比较pmtest3 4(ldt gate)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894425

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize

Level3 — PART 3 — 自然语言处理与文本分析

目录 自然语言处理概要 分词与词性标注 N-Gram 分词 分词及词性标注的难点 法则式分词法 全切分 FMM和BMM Bi-direction MM 优缺点 统计式分词法 N-Gram概率模型 HMM概率模型 词性标注(Part-of-Speech Tagging) HMM 文本挖掘概要 信息检索(Information Retrieval) 全文扫描 关键词

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

研究生生涯中一些比较重要的网址

Mali GPU相关: 1.http://malideveloper.arm.com/resources/sdks/opengl-es-sdk-for-linux/ 2.http://malideveloper.arm.com/resources/tools/arm-development-studio-5/ 3.https://www.khronos.org/opengles/sdk/do

性能测试工具 wrk,ab,locust,Jmeter 压测结果比较

前言 在开发服务端软件时,经常需要进行性能测试,一般我采用手写性能测试代码的方式进行测试,那有什么现成的好的性能测试工具吗? 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 详见: 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 Jmeter性能测试 入门

超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。

阿里提出UniPortrait,能根据用户提供的文本描述,快速生成既忠实于原图又能灵活调整的个性化人像,用户甚至可以通过简单的句子来描述多个不同的人物,而不需要一一指定每个人的位置。这种设计大大简化了用户的操作,提升了个性化生成的效率和效果。 UniPortrait以统一的方式定制单 ID 和多 ID 图像,提供高保真身份保存、广泛的面部可编辑性、自由格式的文本描述,并且无需预先确定的布局。

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

使用亚马逊Bedrock的Stable Diffusion XL模型实现文本到图像生成:探索AI的无限创意

引言 什么是Amazon Bedrock? Amazon Bedrock是亚马逊云服务(AWS)推出的一项旗舰服务,旨在推动生成式人工智能(AI)在各行业的广泛应用。它的核心功能是提供由顶尖AI公司(如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI以及亚马逊自身)开发的多种基础模型(Foundation Models,简称FMs)。

超声波清洗机哪个品牌比较好一点的?清洁力强的超声波清洗机品牌

随着生活水平的不断提升和幸福感的增强,珠宝、饰品和眼镜等物品已成为许多家庭的常备之物。然而,这些贵重细小的物件易于积聚微尘与隐形细菌,长此以往可能悄悄影响家人的健康,毕竟细菌是肉眼难以察觉的隐患。超声波清洗机应运而生,它以高科技手段有效地解决了这一隐忧,深层清洁,守护家人免受微小污染物的潜在威胁。不过现在市面上超声波清洗机品牌挺多的,究竟有哪些品牌的超声波清洗机比较好一点呢?接下来就为大家带来四款