[内核开发手册] ARM汇编指令速查表
ARM汇编指令速查表
指令 | 描述 | 语法示例 |
---|---|---|
push | 将一个或多个寄存器的值压入栈中,更新栈指针寄存器。 | push {r1, r2, r3} |
add | 执行加法并将结果存储到目标操作数中。 | add r1, r2, #5 |
push.w | 将指定的寄存器的值压入栈中,并将栈指针向下调整4个字节。 | push.w {r4, r5, lr} |
sub | 执行减法并将结果存储到目标操作数中。 | sub r1, r2, #5 |
mov | 将源操作数的值移动到目标操作数中。 | mov r1, r2 |
ldr | 将内存中指定地址的数据加载到目标操作数中。 | ldr r1, [r2] |
str | 将源操作数的值存储到内存中指定地址。 | str r1, [r2] |
movs | 将源操作数的值移动到目标操作数中,并设置条件标志位。 | movs r1, #1 |
adr | 将指定地址的偏移量加载到目标操作数中。 | adr r1, label |
ldr.w | 将内存中指定地址的数据加载到目标操作数中,并零扩展为32位。 | ldr.w r1, [r2] |
adds.w | 将两个操作数相加,并将结果存储到第一个操作数中。 | adds.w r1, r2, #3 |
bx | 将控制流程更改为另一个代码地址处。 | bx lr |
cmp | 比较两个操作数的值,并根据比较结果设置条件码寄存器。 | cmp r2, #0 |
bgt | 当最近一次比较的结果大于时,将控制流程更改为另一个代码地址处。 | bgt loop |
cmp.w | 与cmp类似,但".w"表示使用16位的操作数大小。 | cmp.w r2, #255 |
it | 条件代码融合,允许在同一条指令中执行多个条件操作。 | it gt |
mov.w | 将一个操作数的值复制到另一个操作数中。".w"表示使用16位的操作数大小。 | mov.w r0, #10 |
lsl.w | 将一个操作数向左移动指定数量的位数。".w"表示使用16位的操作数大小。 | lsl.w r1, r2, #3 |
b | 将控制流程更改为另一个代码地址处。 | b done |
bne | 当最近一次比较的结果不相等时,将控制流程更改为另一个代码地址处。 | bne error |
beq.w | 在条件码寄存器表明最近一次比较的结果相等时,将控制流程更改为另一个代码地址处。".w"表示使用16位的操作数大小。 | beq.w done |
bl | 将当前程序计数器(PC)中的地址压入链接寄存器(LR),然后将控制流程更改为另一个代码地址处。 | bl printf |
beq | 与beq.w类似,但没有指定操作数的大小。 | beq error |
cbz | 测试一个寄存器的值是否为零,如果为零,则将控制流程更改为另一个代码地址处。 | cbz r1, done |
movt | 将一个16位的立即数移动到寄存器的高16位。 | movt r1, #0x1234 |
blx | 与bl类似,但可用于跳转到Thumb或ARM代码中的函数。 | blx func |
cbnz | 与cbz类似,但在测试时会反转结果。 | cbnz r3, loop |
subs | 将两个操作数相减,并将结果存储到第一个操作数中。它还设置条件码寄存器以表明结果是否小于、等于或大于零。 | subs r1, r2, #1 |
ittt | 条件并行执行(if-then)。它允许在同一条指令中根据条件执行多个操作。 | ittt eq |
pop | 从栈中弹出一个或多个寄存器的值。 | pop {r0, r1, r2} |
ldrb | 从内存中读取一个字节的数据,并将其存储到寄存器中。 | ldrb r1, [r2, #3] |
strd | 将两个寄存器的值存储到内存中。它可以一次性存储64位的数据。 | strd r1, r2, [r0] |
strb | 将一个字节的数据存储到内存中。 | strb r1, [r2, #3] |
pop.w | 从栈中弹出一个或多个寄存器的值。".w"表示使用16位的操作数大小。 | pop.w {r0, r1, r2} |
str.w | 将一个操作数的值存储到内存中。".w"表示使用16位的操作数大小。 | str.w r3, [r4, #8] |
bne.w | 当最近一次比较的结果不相等时,跳转到标签所在的地址执行。".w"表示使用16位的操作数大小。 | bne.w loop |
eor | 对两个操作数进行异或运算,并将结果存储到第一个操作数中。 | eor r1, r2, #0xff |
mla | 将三个操作数进行乘加运算,并将结果存储到第一个操作数中。 | mla r1, r2, r3, r4 |
lsls | 将一个操作数向左移动指定数量的位数。它还设置条件码寄存器以表明结果是否小于、等于或大于零。 | lsls r1, r2, #3 |
adds | 将两个操作数相加,并将结果存储到第一个操作数中。它还设置条件码寄存器以表明结果是否小于、等于或大于零。 | adds r1, r2, #3 |
movs.w | 将一个操作数的值移动到另一个操作数中,并设置条件码寄存器以指示结果是否小于、等于或大于零。".w"表示使用16位的操作数大小。 | movs.w r1, #10 |
itttt | 与ittt类似,但可以在同一条指令中执行四个条件分支。 | itttt gt |
bhi | 在无符号数比较中,如果最近一次比较的结果大于时,跳转到标签所在的地址执行。 | bhi loop |
add.w | 与add类似,但".w"表示使用16位的操作数大小。 | add.w r1, r2, #3 |
subs.w | 与subs类似,但".w"表示使用16位的操作数大小。 | subs.w r1, r2, #1 |
b.w | 与b类似,但指令要求使用16位的操作数大小。 | b.w loop |
blt | 在有符号数比较中,如果最近一次比较的结果小于时,跳转到标签所在的地址执行。 | blt error |
stm.w | 与stm类似,但".w"表示使用16位的操作数大小。 | stm.w r0!, {r1, r2, r3} |
itt | 与ittt类似,但只能在同一条指令中执行两个条件分支。 | itt lt |
addw | 与add类似,但它允许同时对两个操作数进行加法运算,结果存储到第一个操作数中。 | addw r1, r2, r3 |
eors.w | 与eor类似,但".w"表示使用16位的操作数大小。 | eors.w r1, r2, #0xff |
lsls.w | 与lsls类似,但".w"表示使用16位的操作数大小。 | lsls.w r1, r2, #3 |
eors | 与eors.w类似,但没有指定操作数的大小。 | eors r1, r2, #0xff |
ldrd | 与ldr类似,但可以一次性读取64位的数据。 | ldrd r1, r2, [r3] |
ble | 在有符号数比较中,如果最近一次比较的结果小于或等于时,跳转到标签所在的地址执行。 | ble loop |
movw | 与mov类似,但可以将一个16位的立即数移动到寄存器中。 | movw r1, #0x1234 |
mul | 将两个操作数进行乘法运算,并将结果存储到第一个操作数中。 | mul r1, r2, r3 |
asrs | 与asr类似,但它会设置条件码寄存器以指示结果是否小于、等于或大于零。 | asrs r1, r2, #3 |
ands | 与and类似,但对两个操作数进行按位与运算,并将结果存储到第一个操作数中。 | ands r1, r2, #0xff |
and.w | 与and类似,但".w"表示使用16位的操作数大小。 | and.w r1, r2, #0xff |
blt.w | 如果上一次比较结果小于零,则无条件跳转到目标地址。 | blt.w 0x8000 |
rsb | 将第二个操作数从第一个操作数中减去,并将结果存储在目标寄存器中。 | rsb r0, r1, #2 |
orr.w | 对两个操作数执行按位逻辑或运算,并将结果存储在目标寄存器中。 | orr.w r0, r1, #0xFF |
bls | 如果上一次比较结果小于或等于零,则无条件跳转到目标地址。 | bls 0x9000 |
smmul | 执行有符号的16位乘法,将结果存储在目标寄存器中。 | smmul r0, r1, r2 |
mls | 执行有符号的32位乘法并减去第三个操作数,将结果存储在目标寄存器中。 | mls r0, r1, r2, r3 |
asr.w | 对第一个操作数进行算术右移,位移数由第二个操作数指定,并将结果存储在目标寄存器中。 | asr.w r0, r1, #4 |
bge | 如果上一次比较结果大于或等于零,则无条件跳转到目标地址。 | bge 0xA000 |
bhs | 如果上一次比较结果大于或等于零,则无条件跳转到目标地址。 | bhs 0xB000 |
orr | 对两个操作数执行按位逻辑或运算,并将结果存储在目标寄存器中。 | orr r0, r1, #0xFF |
eor.w | 执行操作数之间的按位异或运算,并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | eor.w r0, r1, #0x12 |
orrs | 执行两个操作数之间的按位逻辑或运算,并根据结果设置条件码。 | orrs r0, r1, #0x3F |
and | 执行两个操作数之间的按位与运算,并将结果存储在目标寄存器中。 | and r0, r1, #0xFF |
bic | 对第一个操作数执行与第二个操作数的按位补码运算,并将结果存储在目标寄存器中。 | bic r0, r1, #0x8 |
sub.w | 将第二个操作数从第一个操作数中减去,并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | sub.w r0, r1, #0x2 |
blo | 如果上一次比较结果小于零(表示目标地址在当前指令之前),则跳转到目标地址执行。 | blo label |
ldrb.w | 从内存中读取单个字节(8位)的数据,并将其存储在目标寄存器中。".w"表示使用16位操作数大小。 | ldrb.w r0, [r1, #4] |
strb.w | 将一个寄存器中的单个字节(8位)的数据写入内存。".w"表示使用16位操作数大小。 | strb.w r0, [r1, #4] |
uxtab | 用于将两个无符号数相加,并将结果存储回一个寄存器中。 | uxtab r0, r1, r2 |
uxtb | 将一个操作数的低8位扩展为32位,并将结果存储在目标寄存器中。 | uxtb r0, r1 |
orn | 执行按位或运算并取反操作,将第二个操作数和第一个操作数中的位进行逐位运算,如果结果为0,则将目标寄存器设置为1,否则为0。 | orn r0, r1, #0x3F |
umull | 执行无符号的32位乘法,并将结果存储在两个目标寄存器中。 | umull r0, r1, r2, r3 |
lsrs | 将第一个操作数向右移动指定数量的位数,用零填充左侧空缺的位,并将结果存储在另一个操作数中。 | lsrs r0, r1, #4 |
ldm.w | 从内存中读取一组寄存器的值,并将它们存储在连续的目标寄存器中。".w"表示使用16位操作数大小。 | ldm.w r0, {r1-r4} |
ite | 条件代码块,根据条件码设置选择执行一组指令或另一组指令。 | ite eq |
stm | 将一组寄存器的值存储到内存中,并使用递增或递减的方式更新基地址寄存器。 | stm r0!, {r1-r3} |
rsbs.w | 将第二个操作数从第一个操作数中减去,并将结果的负数存储在目标寄存器中。".w"表示使用16位操作数大小。 | rsbs.w r0, r1, #5 |
sbcs.w | 执行第一个操作数和第二个操作数之间的按位逻辑加运算,并考虑上一次比较的结果。".w"表示使用16位操作数大小。 | sbcs.w r0, r1, #0x3F |
ldrh | 从内存中读取一个半字(16位)的数据,并将其存储在目标寄存器中。 | ldrh r0, [r1, #4] |
ldrsh.w | 从内存中读取有符号半字(16位)的数据并将其扩展为32位,并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | ldrsh.w r0, [r1, #2] |
uxth.w | 将一个操作数的低16位扩展为32位,并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | uxth.w r0, r1 |
uxth | 将一个操作数的低16位扩展为32位,并将结果存储在目标寄存器中。 | uxth r0, r1 |
vpush | 将一组向量寄存器的值从高地址向低地址压入堆栈。 | vpush {d8-d15} |
vldr | 从内存中读取向量寄存器的值,并将其加载到指定向量寄存器中。 | vldr d0, [r1] |
mvn | 对一个操作数执行按位取反操作,并将结果存储在目标寄存器中。 | mvn r0, r1 |
vmov | 将一个向量寄存器中的值复制到另一个向量寄存器中。 | vmov d0, d1 |
muls | 执行有符号16位乘法,并将结果存储在目标寄存器中。 | muls r0, r1, r2 |
vstr | 将向量寄存器的值存储到内存中。 | vstr d0, [r1] |
vpop | 从堆栈中弹出一组向量寄存器的值,并将它们加载到相应的向量寄存器中。 | vpop {d8-d15} |
tbb | 使用一个操作数中的索引值获取查找表中的一个字节,并跳转到该字节所对应的地址。 | tbb [r0, r1] |
strh | 将一个半字(16位)的数据写入内存中。 | strh r0, [r1, #4] |
vmrs | 将状态寄存器中的值加载到通用寄存器中。 | vmrs r0, fpscr |
tst.w | 执行两个操作数之间的按位与运算,并根据结果设置条件码。".w"表示使用16位操作数大小。 | tst.w r0, #0x3F |
bmi | 如果前一次比较结果为负数,则跳转到目标地址执行。 | bmi label |
lsr.w | 将第一个操作数向右移动指定数量的位数,并将结果存储在另一个操作数中。".w"表示使用16位操作数大小。 | lsr.w r0, r1, #2 |
sbfx | 选取一个操作数中的一段位,并将其存储在目标寄存器中。 | sbfx r0, r1, #4, #6 |
ubfx | 选取一个操作数中的一段位,并将其无符号地扩展为32位,并将结果存储在目标寄存器中。 | ubfx r0, r1, #4, #6 |
subw | 将第二个操作数从第一个操作数中减去,并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | subw r0, r1, #2 |
rsb.w | 将第一个操作数从第二个操作数中减去,并将结果的负数存储在目标寄存器中。".w"表示使用16位操作数大小。 | rsb.w r0, r1, #5 |
sbc | 执行第一个操作数减去第二个操作数再减去上一次比较结果中的进位值(carry),并将结果存储在目标寄存器中。 | sbc r0, r1, r2 |
dmb | 确保在所有内存访问之前和之后对其进行屏障同步处理。 | dmb |
ldrex | 加载一个单一数据元素,并设置一个锁定位以防止其他核心修改该数据元素。 | ldrex r0, [r1] |
strex | 将一个单一数据元素写入内存地址,并清除标志位以表明数据元素不再被锁定。 | strex r0, r1, [r2] |
blo.w | 如果前一个比较结果为负数或零,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | blo.w label |
bhi.w | 如果前一个比较结果为无符号高于,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | bhi.w label |
tbh | 使用一个操作数中的索引值获取查找表中的一个半字,并跳转到该半字所对应的地址。 | tbh [r0, r1, lsl #1] |
bls.w | 如果前一个比较结果为负数、零或者无符号低于,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | bls.w label |
bics | 将第二个操作数按位取反,并与第一个操作数进行按位与运算,将结果存储在目标寄存器中。 | bics r0, r1, #0x3F |
sxth | 将一个操作数的低16位扩展为有符号的32位,并将结果存储在目标寄存器中。 | sxth r0, r1 |
bge.w | 如果前一个比较结果大于等于零,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | bge.w label |
bgt.w | 如果前一个比较结果大于零,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | bgt.w label |
ror.w | 将第一个操作数向右旋转指定数量的位数,并将结果存储在另一个操作数中。".w"表示使用16位操作数大小。 | ror.w r0, r1, #4 |
adc.w | 执行第一个操作数加上第二个操作数再加上上一次比较结果中的进位值(carry),并将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | adc.w r0, r1, r2 |
bhs.w | 如果前一个比较结果无符号大于等于,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | bhs.w label |
pkhbt | 从两个操作数中选择一个指定数量的字节,并将它们交替存储在目标寄存器中。 | pkhbt r0, r1, r2 |
adcs | 执行第一个操作数加上第二个操作数再加上上一次比较结果中的进位值(carry),并将结果和进位值都存储在目标寄存器中。 | adcs r0, r1, r2 |
sbcs | 执行第一个操作数减去第二个操作数再减去上一次比较结果中的进位值(carry),并将结果和借位值都存储在目标寄存器中。 | sbcs r0, r1, r2 |
adc | 执行第一个操作数加上第二个操作数再加上上一次比较结果中的进位值(carry),并将结果存储在目标寄存器中。 | adc r0, r1, r2 |
ble.w | 如果前一个比较结果小于等于零,则跳转到目标地址执行。".w"表示使用16位操作数大小。 | ble.w label |
bfi | 将一个操作数的一段位插入到另一个操作数的指定位置,并将结果存储在目标寄存器中。 | bfi r0, r1, #4, #6 |
cmn.w | 执行第一个操作数加上第二个操作数,但不改变任何操作数的值,根据结果设置条件码。".w"表示使用16位操作数大小。 | cmn.w r0, r1 |
lsr | 将第一个操作数向右移动指定数量的位数,并将结果存储在另一个操作数中。 | lsr r0, r1, #2 |
lsl | 将第一个操作数向左移动指定数量的位数,并将结果存储在另一个操作数中。 | lsl r0, r1, #4 |
movge | 如果前一个比较结果大于等于零,则将第二个操作数的值复制到目标寄存器中。 | movge r0, r1 |
ldrh.w | 从内存中加载一个半字(16位),并将其存储在目标寄存器中。".w"表示使用16位操作数大小。 | ldrh.w r0, [r1, #4] |
bic.w | 对第一个操作数进行按位取反,并与第二个操作数进行按位与运算,将结果存储在目标寄存器中。".w"表示使用16位操作数大小。 | bic.w r0, r1, #0x3F |
相关文章:
[内核开发手册] ARM汇编指令速查表
ARM汇编指令速查表 指令描述语法示例push将一个或多个寄存器的值压入栈中,更新栈指针寄存器。push {r1, r2, r3}add执行加法并将结果存储到目标操作数中。add r1, r2, #5push.w将指定的寄存器的值压入栈中,并将栈指针向下调整4个字节。push.w {r4, r5, …...

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库
宁德时代新能源科技的SHL测评中,语言理解部分主要考察阅读理解、逻辑填空和语句排序等题型,要求应聘者在17分钟内完成30题。阅读理解需要快速捕捉文章主旨和理解细节信息;逻辑填空则要根据语句逻辑填入最合适的词汇;语句排序是将打…...

AutoGenTestCase - 借助AI大模型生成测试用例
想象一下,你正在为一个复杂的支付系统编写测试用例,需求文档堆积如山,边缘场景层出不穷,手动编写让你焦头烂额。现在,有了AutoGenTestCase,这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…...
区块链技术赋能供应链金融:重塑信任与效率
在当今全球经济一体化的背景下,供应链金融作为连接产业与金融的桥梁,正面临着前所未有的机遇与挑战。然而,传统的供应链金融模式存在着诸多痛点,如信息不对称、信任缺失、操作效率低下等。随着区块链技术的兴起,这些问…...

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)
接到一位知识星友的邀请,实现他需要3Dtiles三维模型的简单高度调整需求,适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境:依赖Node安装环境,demo本地Node版本:推荐v18。 运行工具:…...

线程池RejectedExecutionException异常
文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…...
lanqiaoOJ 1508:N皇后问题 ← dfs
【题目来源】 https://www.lanqiao.cn/problems/1508/learning/ 【题目描述】 在 NN 的方格棋盘放置了 N 个皇后,使得它们不相互攻击(即任意 2 个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成 45角的斜线上。你的任务是…...

当 “欧洲版 Cursor” 遇上安全危机
在 AI 编程助手蓬勃发展的当下,安全问题正成为行业不容忽视的隐忧。近期,AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间,因安全漏洞问题掀起了一场风波,引发了业界的广泛关注。 Replit 的员工 Matt Palmer…...
[蓝桥杯]生物芯片
生物芯片 题目描述 X 博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。 博士在芯片中设计了 nn 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。 这些光源…...
Spring Boot使用Redis实现分布式锁
在分布式系统中,分布式锁是一种解决并发问题的常用技术。Redis由于其高性能和丰富的特性,成为实现分布式锁的理想选择。本文将详细介绍如何在Spring Boot应用中使用Redis实现分布式锁。 一、环境准备 安装Redis:确保已经安装并运行Redis服务…...

【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】
AA. 我的开发环境配置与核心工具链解析 一、开发环境全览 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…...

(Python网络爬虫);抓取B站404页面小漫画
目录 一. 分析网页 二. 准备工作 三. 实现爬虫 1. 抓取工作 2. 分析工作 3. 拼接主函数&运行结果 四. 完整代码清单 1.多线程版本spider.py: 2.异步版本async_spider.py: 经常逛B站的同志们可能知道,B站的404页面做得别具匠心&…...

【氮化镓】GaN HMETs器件物理失效分析进展
2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…...
vb.net oledb-Access 数据库本身不支持命名参数,赋值必须和参数顺序一致才行
参数顺序问题:OleDb 通常依赖参数添加的顺序而非名称,为什么顺序要一样? OleDbParameter 顺序依赖性的原因 OleDb 数据提供程序依赖参数添加顺序而非名称,这是由 OLE DB 规范和 Access 数据库的工作机制共同决定的。理解这个问题需要从数据库底层通信…...

Abaqus连接器弹片正向力分析:
.学习重点: • 外部幾何匯入。 • 建立解析剛性面。 • 利用Partition與局部撒點來提高網格品質。 • 材料塑性行為(材料非線性)。 • 考慮大變形(幾何非線性)。 • 接觸(邊界非線性)。 • 平移組裝。 • 設定輸出參數。 • 討論Shear Locking & Hourglassing效應。 1) 設…...

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章
随着信创国产化战略的深入推进和鸿蒙操作系统(HarmonyOS Next)的迅速崛起,市场对兼容国产软件生态的需求日益增长。在这一背景下,中安身份证识别和银行卡识别技术应运而生,为鸿蒙生态的发展注入了新的活力。 移动端身份…...
mybatis打印完整的SQL,p6spy
介绍打印完成的SQL,会降低性能,不要在生产环境使用,我只是在本地,自己的代码中设置,不提交。主要是为了方便,在控制台看见SQL的时候,不用去拼接参数,可以直接复制出来执行。 配置方…...

NLP学习路线图(十九):GloVe
自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…...

如何使用DAXStudio将PowerBI与Excel连接
如何使用DAXStudio将PowerBI与Excel连接 之前分享过一篇自动化文章:PowerBI链接EXCEL实现自动化报表,使用一个EXCEL宏工作薄将PowerBI与EXCEL连接起来,今天分享另一个方法:使用DAX Studio将PowerBI与EXCEL连接。 下面是使用DAX S…...

软考 系统架构设计师系列知识点之杂项集萃(79)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(78) 第141题 软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机…...
神经网络基础:从单个神经元到多层网络(superior哥AI系列第3期)
🧠 神经网络基础:从单个神经元到多层网络(superior哥AI系列第3期) 哈喽!各位AI探索者们!👋 上期我们把数学"怪兽"给驯服了,是不是感觉还挺轻松的?今天我们要进…...

UVa12298 Super Joker II
UVa12298 Super Joker II 题目链接题意输入格式输出格式 分析AC 代码 题目链接 UVa12298 Super Joker II 题意 有一副超级扑克,包含无数张牌。对于每个正合数p,恰好有4张牌:黑桃p,红桃p,梅花p和方块p(分别…...
面向对象系统中对象交互的架构设计哲学
更多精彩请访问:通义灵码2.5——基于编程智能体开发Wiki多功能搜索引擎-CSDN博客 一、对象交互的本质与设计矛盾 在面向对象范式(OOP)中,对象间的交互实质上是软件组件解耦与功能复用的动态平衡过程。每个对象作为独立的计算单元,既需要维护…...

【网络安全】SRC漏洞挖掘思路/手法分享
文章目录 Tip1Tip2Tip3Tip4Tip5Tip6Tip7Tip8Tip9Tip10Tip11Tip12Tip13Tip14Tip15Tip16Tip17Tip18Tip19Tip20Tip21Tip22Tip23Tip24Tip25Tip26Tip27Tip28Tip29Tip30Tip1 “复制该主机所有 URL”:包含该主机上的所有接口等资源。 “复制此主机里的链接”:包括该主机加载的第三…...

【AFW+GRU(CNN+RNN)】Deepfakes Detection with Automatic Face Weighting
文章目录 Deepfakes Detection with Automatic Face Weighting背景pointsDeepfake检测挑战数据集方法人脸检测面部特征提取自动人脸加权门控循环单元训练流程提升网络测试时间增强实验结果Deepfakes Detection with Automatic Face Weighting 会议/期刊:CVPRW 2020 作者: …...
【面试】音视频面试
C内存模型 H.265(HEVC)相比H.264(AVC)的核心优势 1. 压缩效率显著提升 在相同画质下,H.265的码率比H.264降低约40-50%,尤其适用于4K/8K超高清场景。通过**更大的编码单元(CTU,最大…...

性能优化 - 案例篇:缓冲区
文章目录 Pre1. 引言2. 缓冲概念与类比3. Java I/O 中的缓冲实现3.1 FileReader vs BufferedReader:装饰者模式设计3.2 BufferedInputStream 源码剖析3.2.1 缓冲区大小的权衡与默认值 4. 异步日志中的缓冲:Logback 异步日志原理与配置要点4.1 Logback 异…...
Java编程之建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。这种模式允许你分步骤构建一个复杂对象,并且可以在构建过程中进行不同的配置。 模式的核…...
基于TI DSP控制的光伏逆变器最大功率跟踪mppt
基于TI DSP(如TMS320F28335)控制的光伏逆变器最大功率跟踪(MPPT)程序通常涉及以下几个关键部分:硬件电路设计、MPPT算法实现、以及DSP的编程。以下是基于TI DSP的光伏逆变器MPPT程序的一个示例,主要采用扰动…...
Python玩转自动驾驶仿真数据生成:打造你的智能“路测场”
Python玩转自动驾驶仿真数据生成:打造你的智能“路测场” 说到自动驾驶,很多人第一时间想到的是那些造车新势力、激光雷达、传感器、深度学习模型……确实,这些都是自动驾驶的核心硬核。但我今天想和你聊聊一个“幕后功臣”——仿真数据生成。没错,自动驾驶离不开大数据,更…...