摘要: 本文介绍了计算机中断的概念及处理过程,包括异步和同步中断、硬件和软件中断等内容。讨论了中断类型和权限等级,以及中断处理的一般步骤,包括暂停当前进程、获取ISR地址等。重点强调了中断服务例程(ISR)的重要性和处理中断时需注意的事项。 阅读全文
posted @ 2024-04-14 14:18 pDJJq 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 栈缓存溢出是指当程序使用基于堆栈的本地数组时,如果数组元素超出分配大小,可能导致堆栈溢出。溢出会破坏重要数据,可能使程序崩溃,调试困难。示例中的函数读取用户输入到数组,若未检查字符计数,覆写缓冲区将损害栈内容,导致返回错误。测试漏洞方法是输入超出预期字符,如输入200个字符后程序崩溃。 阅读全文
posted @ 2024-04-14 14:16 pDJJq 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 汇编语言简易教程(12):系统服务 应用程序必须使用操作系统执行许多操作。 此类操作包括控制台输出、键盘输入、文件服务(打开、读取、写入、关闭等)、获取时间或日期、请求内存分配等 访问系统服务是应用程序请求操作系统执行某些特定操作(代表进程)的方式。 更具体地说,系统调用是执行进程和操作系统之间的接 阅读全文
posted @ 2024-04-13 17:41 pDJJq 阅读(22) 评论(0) 推荐(0) 编辑
摘要: MySQL事务状态判断 前置 MySQL的默认隔离级别是: 可重复读(REPEATABLE READ) 可重复读隔离级别下,事务中的SELECT操作会看到快照数据,也就是事务开始时刻的数据状态。此隔离级别可以防止脏读和不可重复读,但可能会有幻读的问题出现。 问题描述 表结构 create table 阅读全文
posted @ 2024-04-12 22:38 pDJJq 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 汇编语言中的函数和栈帧技术,通过设置栈帧基址便于访问局部变量和参数。函数定义、标准调用约定(如cdecl和stdcall)是实现函数间参数传递和返回值处理的关键。 阅读全文
posted @ 2024-04-12 22:00 pDJJq 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 介绍了汇编语言中的宏,包括单行宏和多行宏的定义和使用方式。单行宏可简化代码,例如将寄存器内容乘以4;多行宏可以包含不同数量的行,通过% 阅读全文
posted @ 2024-04-12 21:59 pDJJq 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 本文介绍了程序栈的基本概念和操作,包括入栈(push)和出栈(pop)操作。讨论了栈在计算机内存中的实现、rsp寄存器指向堆栈顶部、堆与栈的布局关系等原理,并提供了一个简单的反转数组的示例程序。 阅读全文
posted @ 2024-04-12 12:02 pDJJq 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 汇编语言简易教程(8):寻址模式 寻址模式是使用正在访问(读取或写入)的数据项的地址来访问内存中的值的受支持方法。这可能包括变量的名称或数组中的位置。 基本的寻址模式包含: 寄存器 立即数 内存 寻址注意事项 使用[] 需要注意: 访问内存的唯一方法是使用方括号([]'s)。省略括号将不会访问内存, 阅读全文
posted @ 2024-04-12 12:00 pDJJq 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 本文介绍了汇编语言中的移动指令和转换操作。通过mov指令可以在寄存器和内存之间传递数据,同时讨论了缩小和扩大转换的过程,包括有符号和无符号转换。程序员需要谨慎处理数据大小和类型,以确保正确执行。 阅读全文
posted @ 2024-04-11 01:37 pDJJq 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 汇编语言简易教程(6):工具链以及调试器 通常,用于创建程序的编程工具集称为工具链。 就本文而言,工具链包括以下内容 汇编器 Assembler​ 连接器 Linker​ 加载器 Loader​ 调试器 Debugger 虽然工具链有很多选项,但本文使用了一组相当标准的开源工具,这些工具可以很好地协 阅读全文
posted @ 2024-04-10 12:03 pDJJq 阅读(95) 评论(0) 推荐(0) 编辑