- 小傅哥 | https://bugstack.cn 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例、源码分析等。你用剑🗡、我用刀🔪,好的代码都很烧,望你不吝出招! ... 小傅哥 | https://bugstack.cn 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。目前已完成的专题有;Netty4.x实战专题案例、用Java实现JVM、基于JavaAgent的全链路监控、手写RPC框架、架构设计专题案例、源码分析等。你用剑🗡、我用刀🔪,好的代码都很烧,望你不吝出招! ...
- 目录 1、启动文件 2、系统初始化过程 3、全局变量的初始化 从事嵌入式开发的伙伴可能会思考过一个问题,我们一般都是使用芯片厂商提供的驱动库和初始化文件,直接从main函数开始写程序,那么系统上电之后,程序怎么引导进main函数执行的呢?还有,系统上电之后RAM的数据是随机的,那么定义的全局变量的初始值又是怎么实现的呢? 下面我将带着这两个问题,以Cortex-M... 目录 1、启动文件 2、系统初始化过程 3、全局变量的初始化 从事嵌入式开发的伙伴可能会思考过一个问题,我们一般都是使用芯片厂商提供的驱动库和初始化文件,直接从main函数开始写程序,那么系统上电之后,程序怎么引导进main函数执行的呢?还有,系统上电之后RAM的数据是随机的,那么定义的全局变量的初始值又是怎么实现的呢? 下面我将带着这两个问题,以Cortex-M...
- 什么是汇编器和链接器? 汇编器(assembler):用于将汇编语言源程序转换为机器语言链接器(linker):一种工具程序,把编译器生成的单个文件组合成一个可执行文件寄存器(register):是 CPU 中被命名的存储位置,用于保存操作的中间结果 MASM能创建哪些类型的程序? 32 位保护模式(32-Bit Protected Mode):运行于所有的 32... 什么是汇编器和链接器? 汇编器(assembler):用于将汇编语言源程序转换为机器语言链接器(linker):一种工具程序,把编译器生成的单个文件组合成一个可执行文件寄存器(register):是 CPU 中被命名的存储位置,用于保存操作的中间结果 MASM能创建哪些类型的程序? 32 位保护模式(32-Bit Protected Mode):运行于所有的 32...
- 目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题:公平的糖果棒交换 第10题:替换后的最长重复字符 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案... 目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题:公平的糖果棒交换 第10题:替换后的最长重复字符 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案...
- 目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题:公平的糖果棒交换 第10题:替换后的最长重复字符 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案... 目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题:公平的糖果棒交换 第10题:替换后的最长重复字符 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案...
- 上一章介绍的是IDA的交叉引用功能,交叉引用反映的是地址之间的关系,但是可能还是不够描绘出我们对整个程序的大局观,因此,我们可以以交叉引用为起点,通过IDA绘图功能描绘出各个方法、基本块(几条指令的组合)和指令之间的关系。 IDA总共提供了两种绘图功能,分别为第三方提供的外部图形功能和IDA内置的图形功能。其中我们常用的通过空格键在反汇编切换出来的图形就是IDA内置的... 上一章介绍的是IDA的交叉引用功能,交叉引用反映的是地址之间的关系,但是可能还是不够描绘出我们对整个程序的大局观,因此,我们可以以交叉引用为起点,通过IDA绘图功能描绘出各个方法、基本块(几条指令的组合)和指令之间的关系。 IDA总共提供了两种绘图功能,分别为第三方提供的外部图形功能和IDA内置的图形功能。其中我们常用的通过空格键在反汇编切换出来的图形就是IDA内置的...
- 目录 第1题:字符的最短距离 第2题:棒球比赛 第3题:判定是否互为字符重排 第4题:岛屿的周长 第5题:两个数组的交集 第6题:计算质数 第7题:旋转数组 第8题:二叉树的层平均数 第9题:修建二叉搜索树 第10题:分糖果 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 第1题... 目录 第1题:字符的最短距离 第2题:棒球比赛 第3题:判定是否互为字符重排 第4题:岛屿的周长 第5题:两个数组的交集 第6题:计算质数 第7题:旋转数组 第8题:二叉树的层平均数 第9题:修建二叉搜索树 第10题:分糖果 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 第1题...
- 目录 第1题:数组中的第K个最大元素 第2题:字符串相乘 第3题:最长重复子数组 第4题:有效的完全平方 第5题:访问所有点的最小时间 第6题:路径总和 第7题:跳水板 第8题:解压缩编码列表 第9题:汉明距离 第10题:判断能否形成等差数列 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互... 目录 第1题:数组中的第K个最大元素 第2题:字符串相乘 第3题:最长重复子数组 第4题:有效的完全平方 第5题:访问所有点的最小时间 第6题:路径总和 第7题:跳水板 第8题:解压缩编码列表 第9题:汉明距离 第10题:判断能否形成等差数列 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互...
- 目录 第1题:整数转换 第2题:重复的子字符串 第3题:范围求和2 第4题:反转数位 第5题:数字转换为十六进制 第6题:比较含退格的字符 第7题:三个数的最大乘积 第8题:珠玑妙算 第9题:旋转字符串 第10题:较大分组的位置 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 第... 目录 第1题:整数转换 第2题:重复的子字符串 第3题:范围求和2 第4题:反转数位 第5题:数字转换为十六进制 第6题:比较含退格的字符 第7题:三个数的最大乘积 第8题:珠玑妙算 第9题:旋转字符串 第10题:较大分组的位置 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。 第...
- #include <stdio.h> size_t strlen(const char *string){//通过这函数可知,对于一个未初始化的字符数组,求它的字符串长度是不对的,也是不可知的。 size_t length; for(length = 0; *string++ != '\0';) { length+=1;//遍历整个字符串,直到遇到空字符 } re... #include <stdio.h> size_t strlen(const char *string){//通过这函数可知,对于一个未初始化的字符数组,求它的字符串长度是不对的,也是不可知的。 size_t length; for(length = 0; *string++ != '\0';) { length+=1;//遍历整个字符串,直到遇到空字符 } re...
- C++类是C结构体面向对象的扩展,因此,在结束数据结构的讨论时,我们有必要介绍一下已编译的C++代码的各种特性。牢固掌握C++语言的基础知识,对于你理解已编译C++代码将大有裨益。在源代码层次上完全掌握继承和多态等面向对象的概念会非常困难。尝试在汇编语言层次上深入这些概念,但却不了解它们在源代码层次上的意义,毫无疑问,你会陷入困境。 this指针 this可以看成是... C++类是C结构体面向对象的扩展,因此,在结束数据结构的讨论时,我们有必要介绍一下已编译的C++代码的各种特性。牢固掌握C++语言的基础知识,对于你理解已编译C++代码将大有裨益。在源代码层次上完全掌握继承和多态等面向对象的概念会非常困难。尝试在汇编语言层次上深入这些概念,但却不了解它们在源代码层次上的意义,毫无疑问,你会陷入困境。 this指针 this可以看成是...
- 我们知道一个.c, .cpp文件到可执行文件经历了4个阶段:预编译,编译,汇编,链接;下面就介绍一下各个过程的完成的工作 预编译 1:将所有的#define删除,并展开所有的宏定义; 2:处理所有的预编译指令,例如:#if,#elif,#else,#endif; 3:处理#include预编译指令,将被包含的文件插入到预编译指令的位置; 4:添加行号信息文件名... 我们知道一个.c, .cpp文件到可执行文件经历了4个阶段:预编译,编译,汇编,链接;下面就介绍一下各个过程的完成的工作 预编译 1:将所有的#define删除,并展开所有的宏定义; 2:处理所有的预编译指令,例如:#if,#elif,#else,#endif; 3:处理#include预编译指令,将被包含的文件插入到预编译指令的位置; 4:添加行号信息文件名...
- 正常程序中会包含许多的复杂数据结构,就内存布局而言,数组可以算是最简单的复合数据结构来。传统意义上的数组指包含同一数据类型的连续元素的连续内存块。用数组中元素的数量乘以每个元素的大小,即可直接计算出数组的大小。 访问数组元素的方式可以是整数常量偏移,也可能是索引*数组元素大小的动态计算的方式。 全局分配的数组 如果一个数组在程序的全局数据区内分配(例如,在.dat... 正常程序中会包含许多的复杂数据结构,就内存布局而言,数组可以算是最简单的复合数据结构来。传统意义上的数组指包含同一数据类型的连续元素的连续内存块。用数组中元素的数量乘以每个元素的大小,即可直接计算出数组的大小。 访问数组元素的方式可以是整数常量偏移,也可能是索引*数组元素大小的动态计算的方式。 全局分配的数组 如果一个数组在程序的全局数据区内分配(例如,在.dat...
- 前言 Native逆向大概是每个逆向人都敬畏又心存挑战的存在,但是又不知道从何下手,得益于汇编的繁琐,简单的高级语言在反编译成汇编指令之后分析起来复杂膨胀了无数倍,再加上对IDA Pro的一无所知,反编译阅读就是安卓ARM逆向的第一道难题,因此决定一步一步从《IDA Pro权威指南》开始积累知识点和学习经验,相信很多朋友也有一样的想法,但又苦于完整的阅读一本书,而且基... 前言 Native逆向大概是每个逆向人都敬畏又心存挑战的存在,但是又不知道从何下手,得益于汇编的繁琐,简单的高级语言在反编译成汇编指令之后分析起来复杂膨胀了无数倍,再加上对IDA Pro的一无所知,反编译阅读就是安卓ARM逆向的第一道难题,因此决定一步一步从《IDA Pro权威指南》开始积累知识点和学习经验,相信很多朋友也有一样的想法,但又苦于完整的阅读一本书,而且基...
- 重命名和注释 变量重命名 快捷键(y),若想恢复则更名为空白名称即可方法/寄存器重命名 快捷键(N)注释:常规注释(:)/可重复注释(;),「;」表示该行为注释 如果你所分析的文件类型与常见编译器生成的普通二进制可执行文件相差甚大,你可能需要对反汇编分析和显示过程进行更多的控制。在分析采用自定义文件格式(IDA无法识别)的模糊代码或文件时,情况更是如此。 此时便需... 重命名和注释 变量重命名 快捷键(y),若想恢复则更名为空白名称即可方法/寄存器重命名 快捷键(N)注释:常规注释(:)/可重复注释(;),「;」表示该行为注释 如果你所分析的文件类型与常见编译器生成的普通二进制可执行文件相差甚大,你可能需要对反汇编分析和显示过程进行更多的控制。在分析采用自定义文件格式(IDA无法识别)的模糊代码或文件时,情况更是如此。 此时便需...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签