汇编学习笔记
汇编
1. debug指令
-R命令(register)
查看、改变CPU寄存器的内容
r ax 修改AX中的内容
-D命令(display)
查看内存中的内容
-E命令(enter)
改写内存中的内容
-U命令(unassenble反汇编)
将内存中的机器指令翻译成汇编指令
-T命令(trace跟踪)
执行一条机器指令
-A命令(assenble汇编)
以汇编指令的格式在内存中写入一条机器指令
2. mov、add、sub指令
1.mov(传送)
格式:mov ax, bx
注意:
1. 目标操作数与源操作数不能同时为内存操作数 2. 不能直接将立即数传送给段寄存器 3. CX不能以一切形式传送 4. 两个操作数类型必须一致, 字节、字、双字
2.add
格式:add ax, bx
若两数相加结果超过寄存器位数,舍弃超出的高位
eg1溢出:cx = F06F
add cx, cx 原: F06F + F06F = 1E0DE
cx = E0DE 最高位的 1 被舍去
eg2高位: BX = F037
add bh, 37 原: F0 + 37 = 127
BX = 2737
eg3低位: CX = E0DE
add cl, B6 原:DE + B6 = 194
CX = E094 低位计算也不会进位
3.sub
格式: sub op1,op2 ;意为:op1=op1-op2
若两数相减,被减数小于减数,则被减数从最高位的上一位借1
eg1: BX = 1303
sub bx, F
BX = 12F4
eg2借位: BX = 000F
sub bx, 10 原:1000F - 10 = FFFF
BX = FFFF 从高位借1
eg3: BX = 0000
sub bl, E 原:100 - E = 00F2
BX = 00F2 从目标操作数的高位借1
3.mul、div、and、or指令
1. mul(乘法)
(1)两个相乘数:要么都是8位,要么都是16位。
-
若是8位,一个默认放 AL 中,另一个放在 8位reg 或 内存单元
-
若是16位, 一个默认放在 AX 中, 另一个放在 16位reg 或 内存单元
(2)结果:如果是8位乘法,结果默认放在 AX
如果是16位乘法,结果 高位 默认放在 DX , 低位 默认放在 AX 中
格式:mul reg
mul 内存单元
注意:溢出同加法
2. div(除法)
(1)除数:8位 或 16位,在一个reg 或内存单元中
(2)被除数:默认放在 AX 或 DX 和 AX 中
如果除数为8位,被除数则为16位,默认放在 AX 中
如果除数为16位,被除数则为32位, 放在在 DX 和 AX 中,DX放高16位,AX放低16位
(3)结果: 如果除数为8位, 则商放在 AL,余数放在 AH
如果除数为16位,则商放在 AX,余数放在 DX
格式: div reg
div 内存单元
除数8位:AX / BL = AL...AH
除数16位:DXAX / BX = AX...DX
eg132位被除数:DX = F , AX = 4240, BX = 2710
mov dx, F F4240 = 1000000 2710 = 10000 64 = 100
mov ax, 4240 原:F4240 / 2710 = 64
mov bx, 2710
div bx
AX = 64 通过高16位DX, 低16位AX组成一个32位的被除数,商放在AX
eg2有余数: DX = F, AX = 4241, BX = 2710
mov dx, F F4241 = 1000001
mov ax, 4241 原:F4241 / 2710 = 64...1
mov bx, 2710 1000001 / 10000 = 100...1
div bx
AX = 64, DX = 0001
3. and(与)
逻辑与指令,按位进行与运算
mov al, 63
and al, 3B
结果:al = 23
注意:该指令可将操作对象的相应位设为0,其他位不变
将al的第0位设为0的指令为:and al, FE(11111110B)
4. or (或)
逻辑或运算,按位进行或运算
mov al, 63
or al, 3B
结果:al = 7B
注意:该指令可将操作对象的相应位设为1,其他位不变
将al的第0位设为1的指令为:or al, 1(00000001B)
4.shl、shr、inc、dec、xchg
1.shl (左移)
shift left
1.将寄存器或内存单元中的数据向左移位
2.将最后移出的一位写入CF(进位标志)中
3.最低位用0补充
格式:mov al, 48 ;(01001000)
shl al, 1 ;将al中的数据都左移一位
结果: al = 90(10010000), CF = 0
2.shr(右移)
shift right
同shl
3.inc(加一)
值加一,不影响CF
4.dec(减一)
5.nop(空)
空指令,先占位
6.xchg(交换)
交互两操作数的值
格式:xchg ax, bx
7.neg(求补)
运算法一:用零减去操作数,然后结果返回操作数
运算法二:将操作数按位取反后加1
8.退出
格式:mov ax, 4c00H
int 21H
安全退出程序
5.寄存器
AX:累加寄存器 OF:溢出标志(超过机器所能表示的有符号数范围)
BX:基址寄存器 ZF:零标志(运算结果为0,ZF=1)
CX:计数寄存器 CF:进位标志
DX:数据寄存器 AF:辅助进位标志(第3位向第4位进位时位1,否则为0)
SP:堆栈指针寄存器 PF:奇偶标志(计算结果为1个数为偶则为1,否则为0)
BP:基址指针寄存器 DF:方向标志(串处理,DF=1时,每次操作后SI和DI减小,DF=0时增大)
SI:源变址寄存器 SF:符号标志(运算结果为负时SF=1)
DI:目的变址寄存器 IF:中断标志(IF=1,允许CPU响应可屏蔽中断,否则关闭中断)
CS:代码段寄存器 TF:陷阱标志(用于调试单步操作)
DS:数据段寄存器
SS:堆栈段寄存器
ES:附加段寄存器
5.CS:ip代码段寄存器、jmp
CS:IP指示了CPU当前要读取指令的地址
CS 为代码段寄存器,IP 为指令指针寄存器
jmp
功能:用寄存器中的值修改IP
格式:jmp ax ;等同于mov IP, ax 等同但不可以这样用 修改IP
jmp ax:bx ;等同于mov CS, ax mov IP, bx 修改CS:IP
6.ss:sp寄存器、栈的push、pop指令
栈底是高地址
1.push
push指令的完成,需要以下两个步骤
-
SP = SP - 2:因为SS:SP指向前栈顶,既然需要push 数据,自然需要获取新栈顶
-
将 push 后面跟的寄存器中的内容写入刚开辟出的内存中,此时的SS:SP指向新栈顶
入栈时,栈顶从高地址向低地址增长
2.pop
pop指令的完成,需要以下两个步骤
-
将栈顶元素送入pop后面跟的寄存器中
-
SP = SP + 2,SS:SP指向下一个元素
出栈时,栈顶从低地址向高地址增长
ss:sp 指向栈顶元素
7.bp,si、di变址寄存器
1. SI 、DI是变址寄存器
SI 与 DI 是功能与 bx相近的寄存器,不能分成8位寄存器来使用,但是可以直接作为偏移地址(有效地址)
[BX+SI] 与 [BX+DI] 可亦作为偏移地址,但是不可加ax、cx、dx这些寄存器
2. BP寄存器
BP默认的段寄存器是SS,bx默认的段寄存器是DS
8.cmp、adc、sbb、
1. adc(进位加法)
adc 是带进位加法指令,利用 CF 位上记录的进位值
格式:adc 操作数1, 操作数2
功能:操作数1 = 操作数1+操作数2 + CF
常用于32位、48位数的相加,可实现进位
2. sbb(借位减法)
sbb 是带借位减法指令,利用 CF 位上记录的借位值
格式:sbb 操作数1, 操作数2
功能:操作数1 = 操作数1- 操作数2 - CF
利用sbb指令可以对任意大的数据进行减法运算
3. cmp(比较)
cmp是比较指令,功能相当于减法指令,只是不保存结果,但是影响标志寄存器
格式:cmp 操作数1, 操作数2
功能:计算 (操作数1 - 操作数2) 但不保存结果,仅改变标志寄存器
9.源程序
assume cs:codesg
codesg segment
mov ax, 0123Hadd bx, 0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21H
codesg ends
end
10.Loop指令
格式:loop 标号
CPU执行loop指令的时候要进行两步操作:
-
(cx) = (cx) - 1
-
判断 cx 中的值,不为零则转至标号处执行程序,如果为零则向下执行
用loop指令实现循环功能,cx中存放循环次数
assume cs:codesg
codesg segmentmov ax, 2mov cx, 11 ;循环11次,输入多少,就循环多少次s: add ax, axloop s
int 21H
codesg ends
end
如果 cx = 0,loop指令会陷入死循环:
因为Loop指令会先减一,即cx = 0 - 1 = FFFF,需要在运行65535次
#include<stdio.h>
int x = 0;
int sum = 0;
for (int i = 1; i <= 100; i++) {x++;sum += x;
}
return sum;
上述C语言转换为汇编语言:
assume cs:codesg
codesg segmentmov ax, 0mov bx, 0mov cx, 100s: inc axadd bx, axloop s
int 21H
codesg ends
end
11.ret、call指令
call ==> func()
ret ==> return
assume cs:codesg
codesg segmentmov ax, 2mov cx, 11call s ;调用函数sint 21H ;若不退出,会执行下一指令,陷入死循环s: add ax, axloop sret ; 封装函数s,等于return
codesg ends
end
1. ret 和 retf
ret 指令用栈中的数据,修改 IP,实现近转移
执行后,进行操作:
(1) IP = SS * 16 + SP
(2) SP = SP + 2
等同于: pop IP
retf指令用栈中的数据,修改 CS 和 IP ,实现远转移
(1) IP = SS * 16 + SP
(2) SP = SP + 2
(3) CS = SS * 16 + SP
(4)SP = SP + 2
等同于: pop IP
pop CS
2.call
格式: call 标号
执行后,进行操作:
(1)将当前的 IP 或 CS 和 IP 压入栈中
(2)转移
3.call far ptr
格式:call far ptr 标号
实现段间转移
12.代码段、数据段、栈段、dup
16进制不能以字母开头
1.在代码段使用数据
assume cs:codesg
codesg segmentdw 123H, 456H, 789H, ABCHstart: mov ax, 3mov cx, 11call sinc bxint 21H
s: add ax,axloop s
codesg ends
end start
start 相当于事先把ip跳到第一行代码的有效地址上,避免了定义的数据与执行代码之间的混乱
2.数据、代码、栈放入不同的段
assume cs:code,ds:data,ss:stack
data segmentdw 123H, 456H, 789H, ABCH
data ends
stack segmentdb 0, 0, 0, 0, 0, 0;等价于 6 dup(0) 即重复6个;dup 'hello world' db 3 dup('abc', 'def')
stack ends
code segmentstart: mov ax, 3mov cx, 11call sinc bxint 21H
s: add ax,axloop s
code ends
end start
dup 的使用格式:
db 重复次数 dup (重复的字节型数据)
dw 重复次数 dup (重复的字型数据)
dd 重复次数 dup (重复的双字型数据)
代码段、数据段、栈段的地址空间的连续的
每个段为避免冲突,至少占用16个字节,(即段地址不同?)
13.offset、jmp
1.操作符offset
功能:取得标号的偏移地址
2.jmp
jmp 为无条件转移指令,可以只修改IP,也可以同时修改CS和IP
1.jmp short 标号
实现段内短转移,对IP修改范围为 -128~127
2.jmp far ptr 标号
实现段间转移,或远转移,修改CS:IP
3.jmp word ptr 内存单元地址(段内地址)
从内存单元地址处开始取一个字,作为转移的目的偏移地址
4.jmp dword ptr 内存单元地址(段间地址)
从内存单元地址处开始取两个字,高地址作为转移的段地址,低地址作为转移的目的偏移地址
14.数组
定义字符串: db ”字符串“
1.arr 数组
assume cs:code,ds:data,ss:stack
data segmentarr dw 12,34 ;定义数组arr2 db "hello world"
data ends
stack segmentdb 10 dup(0)
stack ends
code segmentstart:mov ax, type arr ;type arr 可以查看数组的类型mov ax, type arr2 ;0001是字节,0002是字
code ends
end start
2.数据标号
代码段内定义:
assume cs:code,ds:data,ss:stack
data segment
data ends
stack segmentdb 10 dup(0)
stack ends
code segmentarr dw 12,34 ;定义数组arr2 db "hello world"start:mov ax, arr[2] ;可以通过下标,访问数组,下标增加1,偏移地址增加1字节,不与定义同步;arr[2] <==> cs:[arr+2] mov ax, word ptr arr[2] ;从cs:[arr+2]处开始取一个字的内容,放进axmov si, offset arr ;可以找到数组的有效/偏移地址
code ends
end start
其他段定义:
assume cs:code,ds:data,ss:stack
data segmentarr db 10H,20H,30H,40H ;定义数组arr2 db "hello world"
data ends
stack segmentdb 10 dup(0)
stack ends
code segmentstart:mov ax, datamov ds, ax ;没有上面两行,会找不到data;设置ds指向data段;即 assume处的data与定义了数组的data不同步,导致寻址不同,而找不到定义的数组;默认访问单元的段地址在ds中,而实际要访问的段为datamov ax, arr[2] ;等价于;mov si, offset arr;mov al, ds:[si+2]mov ax, type arr2 ;
code ends
end start
15.实战1.0
输出hello world:
assume cs:codesg,ds:data,ss:stack
data segmentstring db "hello world",10,'123','$' ;$表示终止符,避免向内存后面继续;10是换行的ASCII的值,实现换行功能。32-->空格
data ends
stack segmentdb 10 dup(0)
stack ends
codesg segmentstart: mov ax, datamov ds, axmov dx, offset stringmov ah, 09Hint 21H
mov ah, 4CHint 21H
codesg ends
end start
大写转小写:
ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENTSTR DB "HeLlo woRLd",'$'
DATA ENDS
STACK SEGMENTDB 10 DUP(0)
STACK ENDS
CODE SEGMENTSTART:MOV AX, DATAMOV DS, AXMOV BX, 0MOV CX, 11
S: MOV AL, [BX]CMP AL, 'A'JB NEXTCMP AL, 'Z'JA NEXTOR AL, 20HMOV [BX], ALNEXT: INC BXLOOP S;C语言:;for(int i=0;i<strlen(str);i++)if(大写)转小写
MOV DX, OFFSET STR;LEA DX, STRMOV AH, 09H ;9号功能参数入口为DXINT 21H
MOV AH, 4CHINT 21Hcode ends
end start
找最大值:
ASSUME CS:CODE, DS:DATA, SS:STACK
DATA SEGMENTSTRING DB 10, 15, 22, 80, 50, 39,'$'MAX DB 0
DATA ENDS
STACK SEGMENTDB 10 DUP(0)
STACK ENDS
CODE SEGMENTSTART: MOV AX, DATAMOV DS, AXLEA BX, STRINGMOV CX, 5MOV AL, [BX]S: MOV AH, [BX+1]CMP AL, AHJA CONTINUEMOV AL, AHCONTINUE:INC BXLOOP SMOV [MAX], ALMOV AH, 4CHINT 21H
CODE ENDS
END START
参考:《汇编语言》速成指南(全程敲代码)_哔哩哔哩_bilibili
相关文章:
汇编学习笔记
汇编 1. debug指令 -R命令(register) 查看、改变CPU寄存器的内容 r ax 修改AX中的内容 -D命令(display) 查看内存中的内容 -E命令(enter) 改写内存中的内容 -U命令(unassenble反汇编) 将内存中的机器指令翻译成汇编指令 -T命令(trace跟踪) 执行一条机器指令 -A命令…...
【C++】统计正整数的位数:题目解析与代码优化
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述**题目要求:统计正整数的位数** 💯我的代码实现**核心逻辑解析** 💯老师的代码实现**老师代码逻辑解析** 💯我的代码…...
CF2043b-B. Digits
题目链接 题意:给定两个整数n、d,要求找出排列成n!个d之后的数可以被1-9中奇数整除的数 题解: 主要是考察分类讨论: 被3整除,当d能被3整除时一定成立或者n > 3,当n > 3时n!一定包含因数3 被5整除&a…...
[文献阅读]ReAct: Synergizing Reasoning and Acting in Language Models
文章目录 摘要Abstract:思考与行为协同化Reason(Chain of thought)ReAct ReAct如何协同推理 响应Action(动作空间)协同推理 结果总结 摘要 ReAct: Synergizing Reasoning and Acting in Language Models [2210.03629] ReAct: Synergizing Reasoning an…...
React 高阶组件(HOC)
文章目录 一. 高阶组件(HOC)的定义二. HOC 的作用和优势三. HOC 的使用方式四. HOC 的注意事项和潜在问题五. 应用场景1. 权限控制与认证2. 数据获取与预加载3. 样式和主题管理4. 性能优化 - 缓存数据或组件渲染结果5. 日志记录与调试辅助 六. 总结 一. …...
module ‘django.db.models‘ has no attribute ‘FieldDoesNotExist‘
module ‘django.db.models’ has no attribute ‘FieldDoesNotExist’ xadmin报错 原因 django与xadmin版本不匹配。 django==3.2.7 xadmin-django==3.0.2解决方案 在xadmin/view/edit.py的388行改为 from django.core import exceptions if self.request_method ==...
仓颉语言实战——1. 类型
仓颉语言实战——1. 类型 仓颉语言(Cangjie Language)是一个现代化的、简洁而强大的编程语言,它的类型系统为高效开发提供了极大的支持。本篇文章将围绕仓颉语言中的类型系统展开,结合实战代码,帮助开发者快速掌握这一…...
大数据平台开发学习路线及技能
背景 最近项目涉及这方面,特地整理学习路线方便后续学习。 必备技能 一、编程语言 Java:大数据开发的基础语言,具有跨平台能力,可用于编写各种应用。 Python:机器学习和数据分析领域广泛使用的语言,易于…...
python报错ModuleNotFoundError: No module named ‘visdom‘
在用虚拟环境跑深度学习代码时,新建的环境一般会缺少一些库,而一般解决的方法就是直接conda install,但是我在conda install visdom之后,安装是没有任何报错的,conda list里面也有visdom的信息,但是再运行代…...
python-Flask:SQLite数据库路径不正确但是成功访问到了数据库,并对表进行了操作
出现了这个问题,就好像是我要去找在南方的人,然后我刚好不分南北,我认为的方向错了,实则方向对了。 在我针对复盘解决:sqlite3.OperationalError: unrecognized token: “{“-CSDN博客这个内容的时候,又出现…...
阿里云人工智能ACA(七)——计算机视觉基础
一、自然语言处理基本介绍 1. 自然语言处理的定义 1-1 自然语言 人类使用的在社会生活中自然形成的语言 1-2 自然语言处理 目标是让计算机能够理解、解析、生成和处理人类的自然语言 包含自然语言理解和自然语言生成两部分组成 2. 自然语言处理的发展趋势 3.自然语言处理…...
计算机组成(1)——CPU与存储器的连接
目录 CPU与存储器的连接 1.内存条的设计思路 如何读取存储元上是0还是1 存储数据1010 系统的将这些存储元连接起来 2.译码器的原理 3.加入控制电路 4.位扩展 5.字扩展 CPU与存储器的连接 1.内存条的设计思路 内存条:存储体、MAR(地址寄存器&am…...
MySQL学习之表查询操作
MySQL学习之表查询操作 准备数据 创建数据表和导入数据 CREATE TABLE user (id INT COMMENT 编号,name VARCHAR (10) COMMENT 姓名,gender CHAR(1) COMMENT 性别,age TINYINT UNSIGNED COMMENT 年龄,phone VARCHAR(11) COMMENT 手机号,idcard CHAR(18) COMMENT 身份证号,addre…...
GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】
🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 桌面版安装包下载clone 仓库操作如下GitLab 配置不再重复输入账户和密码的两个方…...
六十:HTTP/2与gRPC框架
随着互联网技术的发展,应用程序之间的通信需求日益复杂和多样化。传统的HTTP/1.x协议虽然广泛应用,但在性能和功能方面已经难以满足现代应用的需求。为了解决这些问题,HTTP/2协议和基于其之上的gRPC框架应运而生。本文将介绍HTTP/2协议的特点…...
普通的树形数据primevue的treetable组件的treetable[ ]
1,核心思想就是缺什么属性加什么属性 1.原始数据 原始数据本身就是树状,只是不是TreeNode类型的数组,这样的数据,primevue的treetable组件是展示不出来的,自己把这个数组转成node类型的,会有一个难解决的…...
数据库设计问题记录
唯一性约束和逻辑删除的冲突 问题描述 如果一张表中,存在唯一性约束,比如一些数据中的code,且数据表使用逻辑删除。当删除某行数据的时候,以后再次插入相同code的数据,数据库会报错。 问题分析 在逻辑删除中&#…...
基于springboot的汽车租赁系统丨源码+数据库+万字文档+PPT
作者简介: 作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 技术框架 开发语言:Java 框架:spring…...
计算机毕业设计hadoop+spark+hive民宿推荐系统 酒店推荐系统 民宿价格预测 酒店价格 预测 机器学习 深度学习 Python爬虫 HDFS集群
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】
1. 常用资料以及官方网站 无人机飞控PX4用户使用手册(无人机基本设置、地面站使用教程、软硬件搭建等):https://docs.px4.io/main/en/ PX4固件开源地址:https://github.com/PX4/PX4-Autopilot 飞控硬件、数传模块、GPS、分电板等…...
渗透测试常用术语总结
一、攻击篇 1.攻击工具 肉鸡 所谓“肉鸡”是一种很形象的比喻,比喻那些可以被攻击者控制的电脑、手机、服务器或者其他摄像头、路由器等智能设备,用于发动网络攻击。 例如在2016年美国东海岸断网事件中,黑客组织控制了大…...
Spring Boot 介绍与应用
什么是 Spring Boot? Spring Boot 是一个用于简化 Spring 应用程序开发和部署的框架,它建立在 Spring 框架的基础之上,但去除了繁琐的配置。Spring Boot 采用“约定优于配置”的原则,默认启用了大量自动配置,使得开发…...
前端:改变鼠标点击物体的颜色
需求: 需要改变图片中某一物体的颜色,该物体是纯色; 鼠标点击哪个物体,哪个物体的颜色变为指定的颜色,利用canvas实现。 演示案例 代码Demo <!DOCTYPE html> <html lang"en"><head>&l…...
基于Android的校园导航系统
基于Android的校园导航系统是一种专为校园环境设计的移动应用程序,旨在帮助学生、教职工及访客快速、准确地找到校园内的目的地。以下是对基于Android的校园导航系统的详细介绍: 一、系统概述 基于Android的校园导航系统通常包括客户端(移动…...
ipad如何做副屏(Windows/Mac Moonlight Sunshine)
Windows 被连接主机(Windows) 要使用的话需要固定ip,不然ip会换来换去,固定ip方法本人博客有记载Github下载Sunshine Sunshine下载地址除了安装路径需要改一下,其他一路点安装完成后会打开Sunshine的Web UIÿ…...
微信小程序页面传参长度问题
需求:a页面传递参数到b页面,传递的参数是一个对象,需要进行json转换,但在小程序中传递的参数长度是有限制的,因此我们传递的时候可以,但是接收的时候,往往会被自动截取掉超出的部分,…...
Redis 安装部署[主从、哨兵、集群](windows版)
说明:该方式建议仅用于自己研究,不建议用于生产 linux 版本见:Redis 安装部署[主从、哨兵、集群](linux版) 一、Redis 下载安装 下载 下载地址:https://github.com/zkteco-home/redis-windows/releases?…...
反应力场的生成物、反应路径分析方法
关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...
安卓音频之dumpsys audio
目录 概述 详述 dumpsys audio 1、音频服务生命周期的事件日志 2、音频焦点事件日志 3、音频流音量信息 4、音量组和设备的相关信息 5、铃声模式 6、音频路由 7、其他状态信息 8、播放活动监控信息 9、录音活动记录 10、AudioDeviceBroker 的记录 11、音效&#…...
StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成
文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…...
蓝桥杯真题 - 异或和 - 题解
题目链接:https://www.lanqiao.cn/problems/3549/learning/ 个人评价:难度 3 星(满星:5) 前置知识:树状数组,dfs 序 整体思路 查询以节点 x x x 为根的子树下所有节点异或和,用 …...
【ES6复习笔记】let 和 const 命令(1)
ES6 中的 let 和 const 关键字 1. let 关键字 let 关键字用于声明一个变量,它具有块级作用域,这意味着变量只在声明它的块内有效。与 var 不同,let 不允许在同一作用域内重复声明同一个变量。 2. const 关键字 const 关键字用于声明一个常…...
ReconFusion: 3D Reconstruction with Diffusion Priors 论文解读
目录 一、概述 二、相关工作 1、稀疏视角NeRF 2、用于视角合成的回归模型 3、用于视角合成的生成模型 4、2D扩散用于3D生成 三、ReconFusion 四、实验 一、概述 提出可以利用三张图片生成实景三维重建的方法ReconFusion。并且在合成数据集和多视图数据集上进行训练&…...
企业安装加密软件有什么好处?
加密软件为企业的安全提供了很多便利,从以下几点我们看看比较重要的几个优点: 1、数据保护:企业通常拥有大量的商业机密、客户数据、技术文档等敏感信息。加密软件可以对这些信息进行加密处理,防止未经授权的人员访问。即使数据被…...
Linux(Centos 7.6)目录结构详解
Linux(Centos 7.6)是一个操作系统,其核心设计理念是将一切资源抽象为文件,即一切皆文件。比如系统中的硬件设备硬盘、网络接口等都被视为文件。Windows系统一般是分为C、D、E盘。而Linux(Centos 7.6)是以斜线"/"作为文件系统的开始目录&#x…...
GXUOJ-算法-第二次作业
1.矩阵连(链)乘 问题描述 GXUOJ | 矩阵连乘 代码解答 #include<bits/stdc.h> using namespace std;const int N50; int m[N][N]; int p[N]; int n;int main(){cin>>n;//m[i][j] 存储的是从第 i 个矩阵到第 j 个矩阵这一段矩阵链相乘的最小…...
BGP基础配置
使用直连接口IP地址来建立EBGP对等体关系 1、启动BGP协议 [r1]bgp 100 ----启动BGP协议,并且规定其AS号2、配置设备的RID数值,一般选择设备的loopback接口的IP地址 [r1-bgp]router-id 1.1.1.13、配置BGP对等体信息,包含了对等体的IP地址以及…...
瑞芯微全新芯片平台RK3506优势详解,高集成低功耗,为工业而生 触觉智能测评
RK3506是瑞芯微Rockchip在2024年第四季度全新推出的Arm嵌入式芯片平台,三核Cortex-A7单核Cortex-M0多核异构设计,CPU频率达1.5Ghz, M0 MCU为200Mhz。 而RK3506芯片平台下的工业级芯片型号RK3506J,具备-40-85℃的工业宽温性能、发热量小&#…...
Alice与Bob
Alice与Bob factordb.com 用上面链接可以直接分解 得到101999和966233 按照要求让小的放前面大的放后面得到 接着进行MD5的32位小写哈希 MD5在线加密/解密/破解—MD5在线 flag{d450209323a847c8d01c6be47c81811a}...
【玩转MacBook】Git安装
Git 官网也提到了MacBook 可以使用 Homebrew 安装 Git,所以在此使用 Homebrew 安装。 1、安装 Homebrew 执行安装脚本 在 Terminal 中执行如下命令: /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.…...
【IC验证】verilog及systemverilog特殊特性的分析
verilog及systemverilog特殊特性的分析 1.概述2.赋值延迟(0)总结(1)情况一:initial中进行阻塞赋值和非阻塞赋值(不延迟)a代码b 电路图c 结果 (2)时钟a 代码b 电路图c 结果…...
Apollo中间件技术:从入门到精通
一、引言 在Java开发的微服务架构中,配置管理是一个不可或缺的重要环节。随着服务数量的增加和部署环境的复杂化,传统的手动配置管理方式已难以满足需求。Apollo作为一款开源的分布式配置中心,凭借其强大的功能和灵活的架构,成为…...
汽车行业的MES系统方案(附案例资料合集)
针对汽车行业的MES系统方案,以下是一些关键点和实施案例: 核心功能: 实时监控:MES系统通过传感器和物联网技术实时监控生产线上的每一个环节,确保信息的及时传递。数据分析:系统对收集的数据进行深度分析&a…...
Python入门:7.Pythond的内置容器
引言 Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器&…...
单片机与MQTT协议
MQTT 协议简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布 / 订阅(publish/subscribe)模式的 “轻量级” 通讯协议,该协议构建于 TCP/IP 协议上…...
记录命令行操作树莓派Wifi的方式
打开WiFi rfkill unblock wlan 关闭WiFi rfkill block wlan 设置可连接的WiFi 方法一(bullseye及以前版本才可用,bookworm版本) sudo nano /etc/wpa_supplicant/wpa_supplicant.conf network{ssid"wifi_name"psk"wifi_pas…...
Docker 安装mysql ,redis,nacos
一、Mysql 一、Docker安装Mysql 1、启动Docker 启动:sudo systemctl start dockerservice docker start 停止:systemctl stop docker 重启:systemctl restart docker 2、查询mysql docker search mysql 3、安装mysql 3.1.默认拉取最新版…...
[C#] 复数乘法的跨平台SIMD硬件加速向量算法(不仅支持X86的Sse、Avx、Avx512,还支持Arm的AdvSimd)
文章目录 一、简单算法二、向量算法2.1 算法思路2.1.1 复数乘法的数学定义2.1.2 复数的数据布局2.1.3 第1步:计算 (a*c) (-b*d)i2.1.4 第2步:计算 (a*d) (b*c)i2.1.5 第3步:计算结果合并 2.2 算法实现(UseVectors)2.…...
curl 放弃对 Hyper Rust HTTP 后端的支持
curl 放弃了对使用 Rust 编写 Hyper HTTP 后端的支持,因为用户和开发者对此功能的需求很少。 curl 创始人兼核心开发者 Daniel Stenberg 表示,尽管这项工作最初由 ISRG 赞助并且看起来很有希望,但 Hyper 支持多年来一直处于实验阶段…...
RK3506开发板:智能硬件领域的新选择,带来卓越性能与低功耗
在现代智能硬件开发中,选择一款性能稳定、功耗低的开发板是确保产品成功的关键。Rockchip最新推出的RK3506芯片,凭借其卓越的能效比、多功能扩展性和优秀的实时性能,已经成为智能家电、工业控制、手持终端等领域的热门选择。而基于RK3506的Ar…...