- 博客(110)
- 资源 (2)
- 收藏
- 关注
原创 CCPP汇编综合例程
C,CPP,汇编综合例程文件结构:srcasmams_base.Scmain_c.ccppmain_cpp.cincasm.hmain_c.hmain_cpp.hobjmakefile# src/asm/asm_base.S.text.globl asm_add.globl asm_subasm_add: push %ebp mov %esp,%ebp mov
2021-04-22 20:49:42
259
原创 C中调用C++函数
C中调用C++函数文件结构:srccmain_c.ccppmain_cpp.cincmain_c.hmain_cpp.hobjmakefile// src/c/main_c.c#include "main_cpp.h"#include "main_c.h"int main_c(){ return 0;}int c_add(int a, int b){ return a + b;}int c_sub(int a, int
2021-04-22 20:04:43
1328
原创 C中调用C++函数
C中调用C++函数文件结构:srccmain_c.ccppmain_cpp.cincmain_c.hmain_cpp.hobjmakefile// src/c/main_c.c#include "main_cpp.h"#include "main_c.h"int main_c(){ int a = 10; int b = 20; int c = cpp_add(a, b); int d = cpp_sub(a,
2021-04-22 19:57:05
285
原创 C++中调用汇编函数
C++中调用汇编函数objsrcasmasm_base.Scppmain_cpp.cppincasm.hmakefilea.out# src/asm/asm_base.S.text.globl asm_add.globl asm_subasm_add: push %ebp mov %esp,%ebp mov 0x8(%ebp),%edx mov 0xc(%eb
2021-04-22 19:23:36
839
原创 C中调用汇编函数
C中调用汇编函数文件结构:objsrcmakefile// src/c/main_c.c#include "asm.h"int main_c(){ int a = 10; int b = 20; int c = asm_add(a, b); int d = asm_sub(a, b); return 0;}# src/asm/asm_base.S.text.globl asm_add.globl asm_subasm_add
2021-04-22 18:00:09
1343
原创 数组中数字出现的次数 II
文章目录题目题目描述:示例 1:示例 2:限制:解题思路预备知识:[只出现一次的数字_Lotuscc的博客-优快云博客](https://blog.youkuaiyun.com/canhelove/article/details/115445104)代码题目剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(LeetCode)题目描述:在一个数组numsnumsnums中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4
2021-04-05 20:04:52
174
原创 只出现一次的数字
题目136. 只出现一次的数字 - 力扣(LeetCode)剑指 Offer 56 - I. 数组中数字出现的次数 - 力扣(LeetCode)解题思路异或性质:0⊕0=0(1)0 \oplus 0=0 \tag{1}0⊕0=0(1)0⊕1=1(2)0 \oplus 1=1 \tag{2}0⊕1=1(2)1⊕0=1(3)1 \oplus 0=1 \tag{3}1⊕0=1(3)1⊕1=0(4)1 \oplus 1=0 \tag{4}1⊕1=0(4)结论(1):(1):(1):由(1)(2)(
2021-04-05 17:20:59
98
原创 不用加减乘除做加法
剑指 Offer 65. 不用加减乘除做加法 - 力扣(LeetCode)十进制加法:1998+0624=26221998+0624=26221998+0624=2622不考虑进位1998+0624=15121998+0624=15121998+0624=1512只考虑进位8+4=108+4=108+4=1090+20=10090+20=10090+20=100900+600=1000900+600=1000900+600=1000总和:1512+10+100+1000=26221512+
2021-04-02 16:51:43
89
原创 约瑟夫环问题
约瑟夫环问题剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode)首先以n=5,m=3n=5, m=3n=5,m=3为例。从n=1n=1n=1到n=5n=5n=5从头开始模拟整个过程。在模拟的过程中,主要考虑最终留下来的人的位置,为了方便讨论以及贴合题目,规定编号从000开始。设定f(n,m)f(n,m)f(n,m)为nnn个人中,每次数mmm个,最后安全的人的编号。现在考虑m=3m=3m=3,为了方便叙述,简化f(n,3)=F(n)f(n,3)=F(n)f(n,3)=F(n
2021-04-02 15:37:00
185
原创 内核双向循环链表
内核双向循环链表普通的双向循环链表,一般将前向指针prevprevprev以及后向指针nextnextnext内嵌到特定的数据结构中。再根据这种特定的结构编写插入,删除等函数。struct myOrdinaryType { int data; struct myOrdinaryType *prev, *next;};这里介绍一种通用的双向循环链表,可以不依赖具体的数据类型。struct list_entry_t { struct list_entry_t *prev,
2021-04-01 09:53:50
155
原创 链表寻找环入口
链表寻找环入口#mermaid-svg-JWpRPnYJFwJDkcyw .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-JWpRPnYJFwJDkcyw .label text{fill:#333}#mermaid-svg-JWpRPnYJFwJDkcyw .node rect,#mermaid-svg-JW
2021-03-31 18:59:21
204
1
原创 回溯算法
回溯算法78. 子集 - 力扣(LeetCode)90. 子集 II - 力扣(LeetCode)可以看到当集合中没有重复数字时可以采用这种回溯算法。算法构成的遍历树如下所示,每次遍历到一个节点时就将当前路径上所有节点加入到集合中。我们可以看到一共有8个节点,因此一共有八种结果。#mermaid-svg-TFch7XY5az0Gy4xF .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font
2021-03-31 16:58:08
103
原创 Deepin Qt Install
Deepin APP Store download Qt Creatorsudo apt install qt-defaultThere may be a error No qmlscene installed in Qt Versions .sudo apt install qmlscenesudo apt install qtdeclarative5-dev
2021-01-03 13:46:12
178
原创 Linux C Socket简单应用
Linux C Socket简单应用简单的socket应用。server代码#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/in
2020-07-14 17:28:50
753
原创 Ubuntu18.04 sqlite3安装及其应用
ubuntu18.04 sqlite3安装及其应用1. 安装sqlite3sudo apt-get install sqlite3sudo apt-get install libsqlite3-dev 2. 安装sqlite3可视化工具sqlitebrowsersudo apt-get install sqlitebrowser3. sqlite3简单应用#include <stdio.h>#include <stdlib.h>#include <sqli
2020-07-13 17:35:36
6736
原创 C语言三大标准C89,C99和C11
C89 标准1983 年美国国家标准局(American National Standards Institute,简称 ANSI)成立了一个委员会,专门来制定C语言标准。1989 年C语言标准被批准,被称为 ANSI X3.159-1989 “Programming Language C”。这个版本的C语言标准通常被称为 ANSI C。又由于这个版本是 89 年完成制定的,因此也被称为 C89。C99 标准在 ANSI C 标准确立之后,C语言的规范在很长一段时间内都没有大的变动。1995 年C程序
2020-07-07 18:16:21
6589
原创 cmake基础用法总结
简单使用:CMakeLists.txt文件内容如下:cmake_minimum_required(VERSION 2.8)project (hello)add_executable(hello hello.c)注释:这个示例中我们只有一个源文件hello.c,目标是生成一个hello的可执行文件。运行cmake .后生成Makefile文件,. 代表CMakeLists.txt在当前目录下,再make即可生成hello的可执行文件。第一行用于指定cmake最低版本。第二行指定项目名称。
2020-07-06 18:28:13
446
1
原创 Linux下静态库和动态库的生成和使用
静态库的生成和使用:gcc -c code1.c code2.car rcs libxx.a code1.o code2.ogcc -o file file.c -L. -lxx注释:静态库的名称有一定的格式要求,一般是libxx.a,xx为库名。-L指定库文件的路径 ,-L.代表当前目录。-l指定编译时要连接的静态库,-lxx代表库名为xx。动态库的生成和使用:gcc -shared -fPIC -o xx.so xx.cgcc -o file file.c ./xx.so
2020-07-06 17:35:33
603
原创 编译器三级优化都干了什么
GNU编译器提供-O选项供程序优化使用:-O 提供基础级别的优化-O2 提供更加高级的代码优化,会占用更长的编译时间-O3 提供最高级的代码优化-O4 不优化,这是默认值第一级:代码调整代码调整是一种局部的思维方式;基本上不触及算法层级;它面向的是代码,而不是问题; 所以:语句调整,用汇编重写、指令调整、换一种语言实现、换一个编译器、循环展开、参数传递优化等都属于这一级;这个级别试图执行9种单独的优化功能:-fdefer-pop-fmerge-constans-fthread-jump
2020-07-06 17:11:57
473
1
原创 嵌入式 linux C 第 1 天
问题1:嵌入式底层开发为什么选择C语言?C语言具有出色的可移植性,能在多种不同体系结构的软/硬件平台上运行。C语言具有简洁紧凑、使用灵活的语法机制,并能直接访问硬件。C语言具有很高的运行效率。参考资料:嵌入式开发为什么选择C语言?问题2:什么是实时性?硬实时?软实时?实时性就是系统的活动是有时限的特性,系统必须在规定的时刻或时间段内活动(如采集数据,做出响应等)硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现
2020-07-03 16:56:04
309
原创 C语言面对对象的一种简单写法
#include <stdio.h>#include <string.h>struct app{ int x; int y; char name[10]; void (*init)(struct app *thisptr, int _x, int _y, const char *_name); int (*calxy)(str...
2019-10-28 12:02:50
747
原创 x86_64汇编调用过程简介
文章目录过程是软件中一种很重要的抽象。转移控制:转移控制是通过call指令以及ret指令来实现的。传递数据:数据可以通过寄存器和栈来传递。分配和释放内存:局部存储分为栈上的局部存储以及寄存器中的局部存储。过程是软件中一种很重要的抽象。它提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现了某种功能。设计良好的软件用过程作为抽象机制,隐藏某个行为的具体实现,同时又提供清晰简洁的接口...
2019-10-28 10:46:34
569
原创 switch汇编跳转表
switch语句跳转表switch语句可以根据一个整数索引值进行多重分支。GCC根据case的数量和case值的稀疏程度来翻译switch语句,当case情况比较多(例如4个以上),并且值的范围跨度比较小时,就会使用跳转表。跳转表是一个数组,表项i是一个代码段的地址,这个代码段实现当开关索引值等于i时程序应该采取的动作。void switcher(long a, long b, long ...
2019-10-27 19:58:50
3574
原创 x86_64汇编循环翻译通用方法
x86_64汇编循环翻译通用方法do-while循环do-while循环的通用形式如下:do body-statement while(test-expr);->loop body-statement t = test-expr if(t) goto loop;while循环while循环的通用形式如下:while(test-expr) ...
2019-10-27 17:35:30
779
原创 8086实模式下的中断简介
8086实模式下的中断简介8086实模式下一共有256个中断。每个中断都有一个中断号。中断向量表:内存物理地址0x00000-0x003FF 这 1KB 的空间中,存放了256个中断的入口地址。每个中断的入口地址占用4字节(4B),前2字节为偏移地址,后2字节为段地址。中断分为:外部硬件中断,内部中断,软中断。外部硬件中断:非屏蔽中断,可屏蔽中断可屏蔽中断:由 INIR 引脚接入...
2019-10-27 16:17:43
1580
原创 条件分支的两种基本翻译方法
文章目录条件分支的两种基本翻译方法:1. 使用条件控制2. 使用条件传送总结条件分支的两种基本翻译方法:1. 使用条件控制if(test-expr) then-statementelse else-statement->t = test-exprif(!t) goto false;then-statement goto done;false: else-stat...
2019-10-27 15:42:40
296
原创 bochs调试入门
bochs调试入门安装sudo apt-get install vgabios bochs bochs-x bximage创建软盘bximagefd一直回车,将在当前目录下会创建一个默认大小为1.44M的软盘名为a.img。dd if=boot of=a.img bs=512 count=1 conv=notrunc #将二进制文件写入软盘,boot为汇编生成的二进制文...
2019-09-27 23:16:58
322
原创 stlink GDB调试STM32入门
stlink GDB调试STM32入门github stlink 官方make #编译st-util #启动调试arm-none-eabi-gdb fancyblink.elf #启动GDB调试,fancyblink.elf为自己工程生成的文件在对应的build目录下(gdb) tar extended-remote :4242 #连接端口,默认为4242(gdb) ...
2019-09-22 10:19:33
2314
原创 Makefile 简单工程篇
Makefile 简单工程篇前面介绍了Makefile的基本语法以及简单使用。这次我们考虑怎么编写一个简单工程的Makefile。假设我们的工程目录结构为:|–src| — main.cpp| – foo1.cpp| – foo2.cpp|–include| — foo1.h| — foo2.h|–obj|–bin我们希望编译生成的.o目标文件放在obj目录下,生成的...
2019-09-13 15:46:02
537
1
原创 win10 汇编语言Debug工具安装
资源地址找到安装DOSBox的目录,双击DOSBox 0.74-3 Options.bat文件在文件末尾输入所示内容,注意将目录地址替换为自己Debug.exe存放的地址。双击DOSBox.exe即可打开...
2019-09-07 18:55:15
756
原创 VC6.0+番茄助手安装教程
VC6.0+番茄助手安装教程VC6 With VAX.zip-优快云下载VC6.0的安装解压VC6.0green文件双击sin.bat之后会在桌面生成一个VC6.0的快捷方式。点击即可打开VC6.0.番茄助手的安装解压Visual Assist X文件找到VA_X.dll文件以管理员身份运行cmd,具体方法为:在搜索栏输入cmd,右键以管理员身份运行。输入 re...
2019-09-04 19:24:03
8391
2
原创 Python基本环境配置
Python基本环境配置安装Python3.6Ubuntuapt-get install software-properties-commomadd-apt-repository ppa:jonathonf/python-3.6apt-get updateapt-get install python3.6创建软连接which pythoncd /usr/binrm...
2019-09-01 11:44:38
234
1
原创 Git简单使用
使用Git安装Git下载GitGit使用GitHubThe world’s leading software development platform · GitHubgit基本命令下载代码 git clonegit clone + 地址查看状态 git status添加代码 git add添加所有新文件git add .忽略文件 ignore创...
2019-09-01 10:22:11
147
原创 Nginx虚拟主机配置
Nginx虚拟主机配置Nginx虚拟主机配置步骤配置IP地址绑定IP地址与虚拟主机IP地址的配置主机IP地址的配置ifconfig 网卡名 192.168.x.x netmask 255.255.255.0虚拟主机(分设备)IP地址的配置ifconfig 网卡名:1 192.168.x.x broadcast xx.xx.xx.xx netmask 255.255...
2019-08-31 11:24:53
126
原创 Nginx的配置文件详解
Nginx的配置文件详解默认配置文件详解# 设置用户#user nobody;# 工作衍生进程数worker_processes 1;# 设置错误文件的存放路径#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;# 设置pid存放路...
2019-08-31 11:24:16
119
原创 Nginx简单安装
Nginx文章目录NginxNginx安装配置1. 下载Nginx2. 解压并安装3. 测试是否安装成功Nginx的启动与停止1. Nginx的启动2. Nginx的停止3. Nginx的重启Nginx安装配置1. 下载Nginxnginx: downloadwget http://nginx.org/download/nginx-1.17.3.tar.gz2. 解压并安装ta...
2019-08-31 08:40:27
118
原创 课程大作业
状压DP拿例1举例,一共有三种课程作业。作业名称 截止时间 需要时间Computer 3 3English 20 1Math 3 2我们使用state表示完成的作业状态,001表示完成第一个作业,011表示完成第一个和第二个作业使用cur表示当前的时间,score表示当前扣的分数。...
2019-08-30 22:22:29
768
原创 海贼王之伟大航路
题目链接思路:基本状压dp看题目知道此题求的是最短哈密顿路径,也就是一条从1到n的经过所有点的最短路径。我们可以使用状态压缩,使用一个二进制数state代表一种状态,state代表经过的所有点的集合。例如state=1,代表只经过1号点。state=3(二进制为0011),代表经过1号点和2号点。state=5(二进制为0101),代表经过1号点和3号点。state=6(二进制为0...
2019-08-22 23:55:55
1002
原创 Dividing the Path
思路:从左边往右边考虑,F[x]为区间[0,x]的解。因此所求为F[L]。首先可以推断出,以下几点x 为偶数,因为洒水是以原点为中心画圆,所有直径不可能为奇数。F[x] = F[y]min + 1, y = [x-2B, x-2A]。 因为半径为A——B,所有只有x-2B 到 x-2A 之间才能通过再加一个点达到x。那么如何快速求得[x-2B, x-2A]中的y,使得F[y]最小?需要...
2019-08-22 17:03:04
330
原创 Blocks
题目链接思路:dp[i][j][len] 表示从i到j个大块,并且右边有长度为len的与第j个块颜色相同的块。初始为dp[0][j][0]。从右边开始考虑,也就是从第j个块开始考虑,如果将第j个块直接消掉,结果为dp[i][j-1][0]+ (len[j]+len)*(len[j]+len)如果考虑左边有一个颜色块k与第j块相同能与之合并,结果为dp[i][k][len[k]+len] ...
2019-08-18 19:37:04
178
Debug资料.zip
2019-09-07
VC6 With VAX.zip
2019-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人