第五章ARM处理器的嵌入式硬件系统设计——课后习题
1ARM处理器的工作状态
ARM处理器有两种工作状态。具体而言,ARM处理器执行32位ARM指令集时,工作在ARM状态,当ARM处理器执行16位thumb指令集时候,工作在thumb状态。
1ARM指令特点
1一个大的,统一的寄存器文件。
2基于load/store架构,即仅对寄存器中的数据进行计算操作,不能对内存中的数据进行计算操作。
3简单的寻址模式,即所有的加载、存储地址仅由寄存器内容和指令字段共同决定。
4统一和固定的指令字段,简化指令译码。
文心一言解释
ARM指令体系具有以下特点:
1. 32位指令集:ARM指令集是32位指令集,即每条指令的长度为32位。
2. 哈佛结构:ARM指令体系采用哈佛结构,将程序存储器和数据存储器分开,使得指令和数据可以并行访问,提高了处理器的效率和性能。
3. 寄存器设计:ARM指令体系具有多个寄存器,这些寄存器在指令执行过程中被频繁使用,使得指令执行速度更快。
4. 加载/存储指令:ARM指令体系中的加载/存储指令可以访问内存中的数据,同时也可以对数据进行算术和逻辑运算,使得指令执行更加高效。
5. 异常处理:ARM指令体系具有完善的异常处理机制,可以在处理程序运行时发生的异常或错误时进行相应的处理,提高了系统的稳定性和安全性。
6. 优化执行效率:ARM指令体系采用了一系列优化执行效率的技术,如分支预测、高速缓存、指令级并行等,使得处理器的执行效率更高。
7. 可扩展的指令集:ARM指令体系具有可扩展的指令集,可以针对不同的应用进行优化和扩展,使得处理器的适应性和灵活性得到了进一步提升。
8. 灵活的第二操作数:ARM指令的第二操作数可以是立即数、寄存器或内存地址等,这使得ARM指令可以在读取数值的同时进行算术和移位操作。
9. 支持条件执行:ARM指令支持条件执行,即可以根据某个条件来决定是否执行某条指令,这使得程序的控制流程更加灵活和高效。
10. 支持协处理器操作:ARM指令体系可以支持协处理器操作,通过扩展协处理器完成复杂的功能,使得ARM处理器的性能得到进一步提升。
总之,ARM指令体系具有简单、高效、可扩展、灵活等特点,使得它在嵌入式系统、移动设备、物联网等领域得到了广泛的应用。
2简述ARM指令集和thumb指令集的去呗和联系,并论述两种指令集的优点与缺点

ARM指令集的优点:
1. 丰富的指令集和功能:ARM指令集具有丰富的指令集和功能,支持各种算术运算、逻辑运算、移位操作、跳转等操作。
2. 高效的执行效率:ARM指令集采用了优化执行效率的技术,如分支预测、高速缓存、指令级并行等,使得处理器的执行效率更高。
3. 可扩展的指令集:ARM指令集具有可扩展的指令集,可以针对不同的应用进行优化和扩展,使得处理器的适应性和灵活性得到了进一步提升。
4. 支持条件执行:ARM指令支持条件执行,可以根据指定条件决定是否执行指令,提高了代码的灵活性和执行效率。
ARM指令集的缺点:
1. 指令长度较长:ARM指令集的指令长度较长,每条指令包含多个字段,导致指令存储空间和内存带宽消耗较大。
2. 不适合所有应用程序:由于ARM指令集相对复杂,对于一些简单的应用程序来说,使用ARM指令集可能会增加代码的复杂度和长度。
Thumb指令集的优点:
1. 紧凑的指令长度:Thumb指令集采用16位的指令长度,相较于ARM指令集,Thumb指令集更加紧凑,减少了指令的存储空间和内存带宽消耗。
2. 适合资源受限的嵌入式系统:由于Thumb指令集的短小精悍,适合在资源受限的嵌入式系统和移动设备上使用,可以减少CPU的功耗和存储需求。
3. 支持典型的程序操作:Thumb指令集提供了典型应用程序所需的大部分功能,如算术和逻辑操作、加载/存储数据移动、以及条件和无条件的分支跳转等。
Thumb指令集的缺点:
1. 功能相对较弱:相较于ARM指令集,Thumb指令集的功能相对较弱,一些高级功能可能无法直接通过Thumb指令集实现。
2. 执行效率可能较低:由于Thumb指令集的短小精悍,一些操作可能需要多条指令才能完成,相对于ARM指令集可能会降低执行效率。
综上所述,ARM指令集和Thumb指令集各有优缺点,应根据具体应用场景选择合适的指令集。ARM指令集适用于需要复杂计算和数据处理的任务,而Thumb指令集适用于需要紧凑代码和低功耗的应用。
3简述ARM指令说明的分类和功能,并且举例
ARM指令集可以分为5个大类,数据处理指令,分支跳转指令,存储器访问指令,协处理器指令,杂类指令。
ARM指令集可以分为以下几类:
- 跳转指令:用于实现程序分支转移,有两种方法,一种是使用跳转指令,另外一种是直接向PC寄存器中写入目标地址。
- Load/Store指令:用于在存储器和处理器之间传输数据。Load指令用于把内存中的数据装载到寄存器,而Store指令用于把寄存器中的数据存入内存。ARM共有3种类型的Load/Store指令:单寄存器传输指令、多寄存器传输指令和交换指令。
- 程序状态寄存器指令:这类指令包括MRS和MSR两条,分别用于保存和加载程序状态寄存器。
- 协处理指令:ARM处理器的协处理器操作指令为CDP,通常与协处理编号CP#一致的协处理器将接受此指令,并执行操作。
- 异常中断指令:SWI是软件中断指令用于产生SW1异常中断,以实现在用户模式下调用操作系统的监控功能程序(Supervisor Function)。
- 其他指令:例如分支预测、高速缓存、指令级并行等优化执行效率的技术。
举例来说,以下是一些ARM指令及其功能的示例:
- LDMFD SP!,{R0, R1, R2}:这条指令将内存中堆栈内的数据批量赋值给寄存器,实际应用中寻址方式灵活多样,使用方式可参考LDR指令。
- STRB指令:用于从源寄存器中将一个8位的字节数据传送到存储器中,该字节数据为源寄存器中的低8位。
4ARM处理器支持的数据类型有哪些,字对齐和半字对齐的内涵
ARM处理器主要支持以下数据类型:
- 32位数据(字):在ARM中,将32位的数据称为“字”。
- 16位数据(半字):16位的数据在ARM中被称为“半字”。
关于字对齐和半字对齐:
- 字对齐:存储器中相邻的两个字节单元,且首字节地址能被4整除,这样存储的32位数据称为“字对齐”存储数据。在ARM体系中,要求32位的ARM指令在存储器中必须字对齐存储。
- 半字对齐:存储器中相邻的两个字节单元,且首字节地址能被2整除,这样存储的16位数据称为“半字对齐”存储数据。在ARM体系中,要求16位的Thumb指令必须半字对齐存储。
5在Load/store指令寻址中,试分析字,无符号字节的LOAD/store指令寻址和半字,有符号字节寻址之间的差别
在ARM处理器的Load/Store指令中,字(Word)和半字(Half Word)的寻址方式有所不同,而无符号字节(Unsigned Byte)和有符号字节(Signed Byte)的寻址也有所差异。以下是它们之间的主要差别:
-
字和无符号字节的Load/Store指令寻址:
- 字:一条32位指令(或字),将32位(4字节)数据从内存中读取到寄存器中。对于字寻址,处理器会从内存地址开始处读取4个字节,并将其存储到目标寄存器中。例如,从内存地址0x12345678读取一个字到寄存器r0,指令为
LDR r0, [0x12345678]。 - 无符号字节:一条8位(1字节)的Load/Store指令,用于从内存中读取或存储8位(1字节)的无符号整数。处理器会将8位数据从内存地址读取到寄存器中,或者将8位数据从寄存器存储到内存地址中。例如,从内存地址0x12345678读取一个无符号字节到寄存器r0,指令为
LDRB r0, [0x12345678]。
- 字:一条32位指令(或字),将32位(4字节)数据从内存中读取到寄存器中。对于字寻址,处理器会从内存地址开始处读取4个字节,并将其存储到目标寄存器中。例如,从内存地址0x12345678读取一个字到寄存器r0,指令为
-
半字和有符号字节的Load/Store指令寻址:
- 半字:一条16位指令(或半字),将16位(2字节)数据从内存中读取到寄存器中。对于半字寻址,处理器会从内存地址开始处读取2个字节,并将其存储到目标寄存器中。例如,从内存地址0x12345678读取一个半字到寄存器r0,指令为
LDRH r0, [0x12345678]。 - 有符号字节:一条8位(1字节)的Load/Store指令,用于从内存中读取或存储8位(1字节)的有符号整数。与无符号字节类似,处理器会将8位数据从内存地址读取到寄存器中,或者将8位数据从寄存器存储到内存地址中。但是,有符号字节寻址的指令通常会特别指出,以区别于无符号字节的Load/Store指令。例如,从内存地址0x12345678读取一个有符号字节到寄存器r0,指令可能为
LDRSB r0, [0x12345678]。
- 半字:一条16位指令(或半字),将16位(2字节)数据从内存中读取到寄存器中。对于半字寻址,处理器会从内存地址开始处读取2个字节,并将其存储到目标寄存器中。例如,从内存地址0x12345678读取一个半字到寄存器r0,指令为
6.如何实现两个64位数的加法和减法操作?如何求一个64位数的负数?
在ARM体系中,可以使用以下方法实现两个64位数的加法和减法操作,以及求一个64位数的负数:
- 两个64位数的加法操作:
使用ARM的ADD指令可以实现两个32位数的加法操作,因此可以将64位数拆分成两个32位数,分别进行加法操作,然后再将结果合并起来。
例如,假设有两个64位数A和B,可以将其拆分成高32位A_hi和低32位A_lo,以及高32位B_hi和低32位B_lo。然后使用ADD指令将A_lo和B_lo相加,将结果存储到C_lo中,再将A_hi和B_hi相加,将结果存储到C_hi中。最后将C_lo和C_hi拼接起来就得到了64位数C。
- 两个64位数的减法操作:
使用ARM的SUB指令可以实现两个32位数的减法操作,因此可以将64位数拆分成两个32位数,分别进行减法操作,然后再将结果合并起来。
例如,假设有两个64位数A和B,可以将其拆分成高32位A_hi和低32位A_lo,以及高32位B_hi和低32位B_lo。然后使用SUB指令将A_lo和B_lo相减,将结果存储到C_lo中,再将A_hi和B_hi相减,将结果存储到C_hi中。最后将C_lo和C_hi拼接起来就得到了64位数C。
- 求一个64位数的负数:
在ARM体系中,可以使用NEG指令来实现一个32数的负数操作。因此可以将64位数拆分成两个32位数,分别进行负数操作,然后再将结果合并起来。
例如,假设有一个64位数A,可以将其拆分成高32位A_hi和低32位A_lo。然后使用NEG指令将A_lo取负数,将结果存储到B_lo中,再将A_hi取负数,将结果存储到B_hi中。最后将B_lo和B_hi拼接起来就得到了64位数B。
7CPSR的条件标志位如何受指令执行的影响
CPSR(程序状态寄存器)是ARM处理器中存储关键的程序状态信息的地方,包括条件标志位、中断禁止位、线程/模式位等。
条件标志位是CPSR的其中一个部分,它由以下四个条件标志位组成:
- N(Negative):这是符号位,当执行算术运算时,该位会根据结果的符号来设置。如果结果是负数,该位为1;如果结果是正数或零,该位为0。
- Z(Zero):这是零标志位,当结果是零时,该位会被设置为1。
- C(Carry):这是进位标志位,当进行加法或减法运算时,如果产生进位,该位会被设置为1。
- V(Overflow):这是溢出标志位,当进行有符号整数运算时,如果结果溢出,该位会被设置为1。
指令的执行如何影响CPSR的条件标志位主要取决于该指令的语义。对于算术运算指令(如ADD、SUB等),这些指令会根据结果的符号、零、进位或溢出情况来设置CPSR的条件标志位。例如,如果执行一个ADD指令,并且结果为正数,那么CPSR的N标志位将被设置为0,而Z标志位将被设置为1。如果执行一个SUB指令并且结果为负数,CPSR的N标志位将被设置为1。
需要注意的是,有些指令可能会直接修改CPSR的值,包括条件标志位。例如,在ARM指令集中,有专门的SETEND指令可以设置CPSR的E标志位(表示端序),以及MOV指令可以设置CPSR的其他标志位。因此,在理解特定指令如何影响CPSR的条件标志位时,需要参考具体的指令集文档和ARM架构文档。
8ARM指令系统中支持几种常见的寻址方式,试着举例说明
ARM指令系统中支持多种寻址方式,以下是其中几种常见的寻址方式:
- 立即寻址:在这种寻址方式中,指令中的操作数是直接给出的,例如:ADD R1, R2, #10。这条指令将把10加到R2的值上,结果存储在R1中。
- 寄存器寻址:在这种寻址方式中,操作数是寄存器中的值,例如:ADD R1, R2, R3。这条指令将把R3的值加到R2的值上,结果存储在R1中。
- 寄存器间接寻址:在这种寻址方式中,操作数是寄存器中的地址,例如:LDR R1, [R2]。这条指令将把R2指向的内存地址中的值加载到R1中。
- 基址寻址:在这种寻址方式中,操作数是某个基址寄存器加上一个偏移量,例如:LDR R1, [R2, #10]。这条指令将把R2指向的内存地址偏移10个字节后的值加载到R1中。
- 多重寄存器寻址:在这种寻址方式中,操作数是多个寄存器中的值的组合,例如:ADD R1, R2, R3, LSR #2。这条指令将把R2的值与R3的值逻辑右移两位后相加,结果存储在R1中。
- 堆栈寻址:在这种寻址方式中,操作数是堆栈中的值,例如:PUSH {R4, R5}。这条指令将把R4和R5的值推入堆栈中。
这些寻址方式可以组合使用以实现更复杂的操作。
9什么是伪指令?什么是伪操作?
伪指令和伪操作都是汇编语言中的概念。
伪指令是一种告诉汇编程序如何进行汇编的指令,它不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行。例如,伪指令用于定义数据、定义程序模式、分配存储区、指示程序结束等功能。
伪操作也称为伪指令,是用于对源程序汇编期间由汇编程序处理的操作。例如,伪指令可以将相对于程序或相对于寄存器的地址载入寄存器中。
总的来说,伪指令和伪操作都是为了辅助汇编程序的编写和编译,它们在程序运行期间不会被执行。
10哪些指令可以实现ARM状态和Thumb状态的切换,试着举例说明?
-
在ARM状态(也称为32位状态)下,程序代码以32位(4字节)的形式存储。而在Thumb状态(也称为16位状态)下,程序代码以16位(2字节)的形式存储,因此可以在更少的存储空间内存储更多的代码。但是,需要注意的是,并非所有的ARM指令都可以在Thumb状态下执行。
-
用于切换ARM状态和Thumb状态的指令主要有以下两种:
- MSR(Move to Special Register)指令:该指令可以将特定的值写入到某个特殊寄存器中,从而改变处理器的状态。例如,使用MSR指令将控制寄存器(Control Register)的位20设置为1,可以将处理器从ARM状态切换到Thumb状态。同样,将控制寄存器的位20设置为0可以将处理器从Thumb状态切换回ARM状态。
- HVC(Hypervisor Call)指令:该指令可以用于在运行时从用户空间切换到操作系统的内核空间执行代码。在某些情况下,操作系统可以使用HVC指令来切换处理器的状态,例如从ARM状态切换到Thumb状态,以便在内核空间中执行更少的代码。需要注意的是,HVC指令的使用需要特定的操作系统支持。
-
在ARM状态(也称为32位状态)下,程序代码以32位(4字节)的形式存储。而在Thumb状态(也称为16位状态)下,程序代码以16位(2字节)的形式存储,因此可以在更少的存储空间内存储更多的代码。但是,需要注意的是,并非所有的ARM指令都可以在Thumb状态下执行。
-
用于切换ARM状态和Thumb状态的指令主要有以下两种:
- MSR(Move to Special Register)指令:该指令可以将特定的值写入到某个特殊寄存器中,从而改变处理器的状态。例如,使用MSR指令将控制寄存器(Control Register)的位20设置为1,可以将处理器从ARM状态切换到Thumb状态。同样,将控制寄存器的位20设置为0可以将处理器从Thumb状态切换回ARM状态。
- HVC(Hypervisor Call)指令:该指令可以用于在运行时从用户空间切换到操作系统的内核空间执行代码。在某些情况下,操作系统可以使用HVC指令来切换处理器的状态,例如从ARM状态切换到Thumb状态,以便在内核空间中执行更少的代码。需要注意的是,HVC指令的使用需要特定的操作系统支持。
-
在ARM状态(也称为32位状态)下,程序代码以32位(4字节)的形式存储。而在Thumb状态(也称为16位状态)下,程序代码以16位(2字节)的形式存储,因此可以在更少的存储空间内存储更多的代码。但是,需要注意的是,并非所有的ARM指令都可以在Thumb状态下执行。
-
用于切换ARM状态和Thumb状态的指令主要有以下两种:
- MSR(Move to Special Register)指令:该指令可以将特定的值写入到某个特殊寄存器中,从而改变处理器的状态。例如,使用MSR指令将控制寄存器(Control Register)的位20设置为1,可以将处理器从ARM状态切换到Thumb状态。同样,将控制寄存器的位20设置为0可以将处理器从Thumb状态切换回ARM状态。
- HVC(Hypervisor Call)指令:该指令可以用于在运行时从用户空间切换到操作系统的内核空间执行代码。在某些情况下,操作系统可以使用HVC指令来切换处理器的状态,例如从ARM状态切换到Thumb状态,以便在内核空间中执行更少的代码。需要注意的是,HVC指令的使用需要特定的操作系统支持
MSR control, #0x200000 // 将控制寄存器的位20设置为0,进入ARM状态
// 执行一些ARM指令...
MSR control, #0x200001 // 将控制寄存器的位20设置为1,进入Thumb状态
// 执行一些Thumb指令...
MSR control, #0x200000 // 将控制寄存器的位20设置为0,回到ARM状态
// 执行一些ARM指令...
11 ARM指令支持哪些移位操作
ARM指令集支持以下移位操作:
- 逻辑左移(LSL):将一个值向左移动指定的位数,并在右侧用零填充。
- 逻辑右移(LSR):将一个值向右移动指定的位数,并在左侧用零填充。
- 算术左移(ASL):将一个值向左移动指定的位数,并在右侧用符号位填充。
- 算术右移(ASR):将一个值向右移动指定的位数,并在左侧用符号位填充。
- 循环左移(ROL):将一个值向左循环移动指定的位数,并在右侧用零填充。
- 循环右移(ROR):将一个值向右循环移动指定的位数,并在左侧用零填充。
这些移位操作可以使用ARM指令集中的MOV和SHIFT指令来实现。具体使用哪种指令取决于操作数的位数和移位的类型。
12ARM数据处理指令中的合法立即数应该满足什么要求?
在ARM数据处理指令中,合法立即数需要满足以下要求:
- 立即数必须以“#”为前缀。
- 对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“&”。
- 立即数必须是对应8位位图格式,即立即数是由一个8bit的常数在16位或32位的寄存器中循环移动(向左或向右都行)偶数位得到的。
- 合法的立即数必须能够找到得到它的那个常数,否则这个立即数就是非法的。
13小端存储和大端存储的内涵
小端存储和大端存储是两种不同的字节序规则,用于在计算机中存储和表示多字节数据类型(例如整数)。
小端存储(Little Endian):数据的低位存储在内存的低位置,数据的高位存储在内存的高位置。其优点在于读取和写入单个字节时的操作比较简单。大部分计算机和处理器都采用小端存储,例如x86架构的计算机。
大端存储(Big Endian):内存的低位置存储于内存的高位置,数据的高位存储在内存的低位置。在网络通信中,由于网络协议通常要求以大端序传输数据,因此大端存储比较常用。一些处理器(如PowerPC架构)则使用大端存储。
在实际应用中,程序员通常不需要直接关心字节序问题,因为编译器和底层库已经处理了字节序的转换。只有在与底层交互、网络通信或者需要直接操作二进制数据时,才需要考虑字节序的问题。
14存储器从0x5000开始的100个单元存放ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其他的ASCII码不做变换
AREA |.data|, DATA, READONLY .long 0x5000 .text .global main
main: mov r0, #0x5000 // 存储器地址 mov r1, #100 // 单元数 mov r2, #0 // 计数器初始值
next: ldr r3, [r0, r2, lsl #2] // 读取存储器中的值 cmp r3, #'a' // 比较是否为小写字母 blt next // 如果是小写字母则跳到下一个单元 cmp r3, #'z' // 比较是否为小写字母的最后一个 bgt next // 如果不是小写字母则跳到下一个单元 sub r3, r3, #32 // 将小写字母转换成大写字母 str r3, [r0, r2, lsl #2] // 将转换后的值存回存储器中 add r2, r2, #1 // 计数器加1 b next // 跳到下一个单元
相关文章:
第五章ARM处理器的嵌入式硬件系统设计——课后习题
1ARM处理器的工作状态 ARM处理器有两种工作状态。具体而言,ARM处理器执行32位ARM指令集时,工作在ARM状态,当ARM处理器执行16位thumb指令集时候,工作在thumb状态。 1ARM指令特点 1一个大的,统一的寄存器文件。 2基于…...
Python - GFPGAN + MoviePy 提高人物视频画质
目录 一.引言 二.gif_to_png 三.gfp_gan 四.png_to_gif 五.总结 一.引言 前面我们介绍了 GFP-GAN 提高人脸质量 与 OCR 提取视频台词、字幕,前者可以提高图像质量,后者可以从视频中抽帧,于是博主便想到了将二者进行结合并优化人物 GIF …...
uniapp插件开发
安装android studio:安装目录下bin下的此文件,是用来修改分配给android studio的占用内存。 Android 11足够用。 创建新项目: 目录结构介绍: UI组件介绍:在设计程序界面时可以使用可视化拖拽的方式,没有必要…...
11 Go的作用域
概述 在上一节的内容中,我们介绍了Go的映射,包括:声明映射、初始化映射、操作映射等。在本节中,我们将介绍Go的作用域。在Go语言中,作用域是指变量的可见性范围,它定义了变量在程序中的生命周期和可访问性。…...
RabbitMQ之消息应答和持久化
文章目录 前言一、消息应答1.概念2.自动应答3.消息应答方法4.Multiple 的解释5.消息自动重新入队6.消息手动应答代码7.手动应答效果演示 二、RabbitMQ持久化1.概念2.队列如何实现持久化3.消息实现持久化4.不公平分发5.预取值 总结 前言 在RabbitMQ中,我们的消费者在…...
【分享】Excel“只读方式”的两种模式
查阅Excel表格的时候,担心不小心修改了内容,可以给Excel设置以“只读方式”打开,这样就算修改了内容也不能直接保存表格。Excel表格可以设置两种“只读方式”,一起来看看吧! “只读方式” 1: 打开Excel表…...
华为与美团达成合作,正式启动鸿蒙原生应用开发。
11月13日,华为宣布与美团以HarmonyOS为基础进行产业创新、技术应用、商业发展等方面展开全面合作,全力支持美团启动开发鸿蒙原生应用工作。 自9月25日华为宣布全新HarmonyOS NEXT蓄势待发、鸿蒙原生应用全面启动以来,已有金融、旅行、社交等…...
The 8th China Open Source Conference Successfully Concludes
由开源社主办的第八届中国开源年会(COSCon23)于 2023年10月29日在成都圆满收官。本次大会,为期两天,线下参会报名逾千人次,在线直播观看人数总计 168610 人,直播观看次数达 248725 次,官网累计浏…...
【星海出品】SDN neutron (四) 流分析
Neutron框架之流分析 1.控制端neutron-server通过wsgi接收北向REST API请求,neutron-plugin通过rpc与设备端进行南向通信。 2.设备端agent则向上通过rpc与控制端进行通信,向下则直接在本地对网络设备进行配置。 3.Neutron-agent的实现很多,彼…...
数据分析法宝,一个 SQL 语句查询多个异构数据源
随着企业数据量呈现出爆炸式增长,跨部门、跨应用、跨平台的数据交互需求越来越频繁,传统的数据查询方式已经难以满足这些需求。同时,不同数据库系统之间的数据格式、查询语言等都存在差异,直接进行跨库查询十分困难。 原生跨库查…...
解决:element ui表格表头自定义输入框单元格el-input不能输入问题
表格表头如图所示,有 40-45,45-50 数据,且以输入框形式呈现,现想修改其数据或点击右侧加号增加新数据编辑。结果不能输入,部分代码如下 <template v-if"columnData.length > 0"><el-table-colu…...
Android 透明度设置
目录 一、透明度对照表 二、透明度介绍 三、透明度设置 3.1 xml设置 3.2 代码设置 一、透明度对照表 注:00是完全透明,FF就是完全不透明 我们的UI小姐姐就喜欢给「不透明度」,这个需要自己判断一下。 完全透明:0% HEX: 00 透明度:1%…...
python语言的由来与发展历程
Python语言的由来可以追溯到1989年,由Guido van Rossum(吉多范罗苏姆)创造。在他的业余时间里,Guido van Rossum为了打发时间,决定创造一种新的编程语言。他受到了ABC语言的启发,ABC语言是一种过程式编程语…...
electronjs入门-编辑器应用程序
我们将在Electron中创建一个新项目,如我们在第1章中所示,名为“编辑器”,我们将在下一章中使用它来创建编辑器;在index.js中,这是我们的主要过程;请记住为Electron软件包放置必要的依赖项: npm…...
Xilinx Kintex7中端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优缺点4、详细设计方案设计原理框图OV5640及其配置权电阻硬件方案MIPI CSI-2 RX SubsystemSensor Demosaic图像格式转换Gammer LUT伽马校正VDMA图像缓存AXI4-Stream toVideo OutHDMI输出 5、…...
SIMCSE求相似度分数
import torch from transformers import AutoTokenizer, AutoModelForMaskedLM from sklearn.metrics.pairwise import cosine_similarity# simcse相似度分数 def simcse_similar(model, tokenizer, text_a, text_b):inputs_source tokenizer(text_a, return_tensors"pt&…...
java入门,从CK到一部分数据到mysql
一、需求 需要从生产环境ck数据库导数据到mysql,数据量大约100w条记录。 二、处理步骤 1、这里的关键词是生产库,第二就是100w条记录。所以处理数据的时候就要遵守一定的规范。首先将原数据库表进行备份,或者将需要导出的数据建一张新的表了…...
LeetCode(13)除自身以外数组的乘积【数组/字符串】【中等】
目录 1.题目2.答案3.提交结果截图 链接: 238. 除自身以外数组的乘积 1.题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素…...
WPF资源,静态资源,动态资源
WPF资源介绍 在WPF(Windows Presentation Foundation)中,资源是一种可以在多个地方重复使用的对象。资源可以是任何类型的对象,比如字符串、颜色、画刷、形状、动画、数据模板、样式等。通过将这些对象定义为资源,你可…...
绘图软件 OmniGraffle mac中文版特点说明
OmniGraffle mac是一款图形绘制和图表设计软件,主要面向 macOS 和 iOS 平台。它适用于用户创建流程图、组织结构图、原型设计、网站线框图、地图等各种类型的图形。该软件的界面直观,用户友好,让用户能够轻松地创建和编辑复杂的图形。 OmniGr…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
