<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[adventural的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/adventural</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; adventural]]></copyright><item><title><![CDATA[加密与解密------第一章笔记]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/108468650</link><guid>https://blog.youkuaiyun.com/adventural/article/details/108468650</guid><author>adventural</author><pubDate>Tue, 08 Sep 2020 15:50:16 +0800</pubDate><description><![CDATA[1.字符集
ASCII码与Unicode字符集

ASCII码是一个7位编码标准，共128个字符，最高位总是0
Unicode是ASCII码的一个扩展，其使用两个字节进行编码，因此也被称为宽字符集，在unicode中所有字符都是16位的，ASCII码在Unicode下都会被扩充为16位，高位全部填充0

字节序（大端与小端）
字节序：计算机中字节该以什么样的顺序传送
例如将：12345678h写入内存中




存放顺序
1000h
1001h
1002h
1003h




大端
12h
34h
56h
]]></description><category></category></item><item><title><![CDATA[8086中断知识以及编写0号中断处理程序]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/108015730</link><guid>https://blog.youkuaiyun.com/adventural/article/details/108015730</guid><author>adventural</author><pubDate>Sat, 15 Aug 2020 00:13:29 +0800</pubDate><description><![CDATA[PART1：前言
int n指令的格式为：int n，n为中断类型码
cpu执行int中断，实际上就相当于引发一个n号中断的中断过程，他的大致执行过程如下：

取中断类型n
标志寄存器入栈，置IF=0,TF=0 (为什么要这一步，后面有解释)

// 这一步可以模拟为
pushf 	//标志寄存器入栈
;下面的步骤完成置IF和TF
pushf
pop ax
and ax,11111100B
push ax
popf	//置IF=0,TF=0


CS和IP入栈
令IP=(n*4)，CS=(n*4+2)
80]]></description><category></category></item><item><title><![CDATA[nasm笔记]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/107903231</link><guid>https://blog.youkuaiyun.com/adventural/article/details/107903231</guid><author>adventural</author><pubDate>Fri, 14 Aug 2020 16:43:34 +0800</pubDate><description><![CDATA[nasm编译器

nasm只是一个编译器，只能输出目标文件，你还需要一个链接器来生成exe。
nasm支持多种输出文件格式，比如obj、elf等等。用参数-f告诉nasm输出什么格式。参数-hf可以查看支持的格式。
在没有-f参数的情况下，nasm默认的输出文件格式是bin，比如要写boot sector就要输出成bin。bin这种格式没有所谓段这个概念，分段都是自己管理。



...]]></description><category></category></item><item><title><![CDATA[逆向笔记--常用到的汇编知识点]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/107937367</link><guid>https://blog.youkuaiyun.com/adventural/article/details/107937367</guid><author>adventural</author><pubDate>Tue, 11 Aug 2020 16:42:03 +0800</pubDate><description><![CDATA[函数调用与返回过程
call过程：
// 段内call通常进行两步操作
push 	ip
jmp 	addr
// 如果call的函数不是本段当中的地址
push	cs
push 	ip
jmp 	addr

ret过程：
ret实际上是一个伪指令，由编译器决定在编译时最终使用retn（return from near procedure）或者retf（return from far procedure），这实际上对应了call的两种方式
段内call不需要将段地址压栈，对应的retn只需要实现
pop i]]></description><category></category></item><item><title><![CDATA[8086汇编笔记]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/107924545</link><guid>https://blog.youkuaiyun.com/adventural/article/details/107924545</guid><author>adventural</author><pubDate>Tue, 11 Aug 2020 00:17:53 +0800</pubDate><description><![CDATA[ret和retf指令


ret相当于


pop ip



retf相当于


pop ip
pop cs

子程序调用导致的寄存器冲突问题
编写汇编子程序时不可避免的会用到某些寄存器，而当调用者也就是父程序也使用了相同的寄存器时就会出现问题，如父程序使用了cx但是子程序当中对cx进行了修改


解决方法


由于无法预料到调用子程序的情况，也就没有办法针对性的避免使用父程序已经使用过的寄存器，因此可以在子程序入口处push子程序用到的寄存器，然后再ret前再pop出去
子程序开始： 子程序使用到的寄存]]></description><category></category></item><item><title><![CDATA[dos下调试汇编程序]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/107903508</link><guid>https://blog.youkuaiyun.com/adventural/article/details/107903508</guid><author>adventural</author><pubDate>Mon, 10 Aug 2020 01:44:03 +0800</pubDate><description><![CDATA[前言
最近在看操作系统的实现过程，目前正在看实模式和保护模式这块，实模式下的16位汇编程序有时候会需要调试，于是准备在dos下使用debug进行调试，本文主要记录调试过程中遇到的一些坑
dos环境搭建
过程可以参考怎么在 Linux 中运行 DOS 程序
简化过程如下：
1. 使用qemu-img创建一个虚拟磁盘
qemu-img create dos.img 200M，第一次使用这个命令，使用hexdump查看可以发现里面的内容全部都是0，文件类型为data（就是一个dd命令创建一个全为0的文件）
2. ]]></description><category></category></item><item><title><![CDATA[操作系统引导-----QEMU环境下制作boot引导程序]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/107805247</link><guid>https://blog.youkuaiyun.com/adventural/article/details/107805247</guid><author>adventural</author><pubDate>Thu, 06 Aug 2020 22:06:14 +0800</pubDate><description><![CDATA[目标


制作一个光盘实现qemu下操作系统的引导


储备知识


df命令：列出文件系统的整体磁盘使用量



du命令：常用于计算目录所占容量
-h ：以（G/M）方式显示容量
-k：以KB方式显示
-m：以MB方式显示



mkfs命令：使用指定的文件系统格式化磁盘
-t ：接文件系统格式，如ext3，ext2，vfat等


mount命令：将文件系统挂载到指定的目录下


losetup命令：连接文件与循环设备（/dev/loop）
详解
-d 卸除设备。
-e&lt;加密方式&gt; 启动加]]></description><category></category></item><item><title><![CDATA[Qt样式表设置]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/90261060</link><guid>https://blog.youkuaiyun.com/adventural/article/details/90261060</guid><author>adventural</author><pubDate>Thu, 16 May 2019 12:49:19 +0800</pubDate><description><![CDATA[前言
最近在用Qt写课程设计，把平时遇到的问题在这里记录一下
相关问题及解决
遇到的问题以及解决：


使用QMenu以及QInputDialog时背景为黑色,看不见字体：
解决方法：检查QMenu或者QInputDialog继承的父部件或者祖先部件中是否有设置过styleSheet为transparent，原因是子部件会继承父部件及祖先部件的transparent属性，背景显示为黑色，当然也可以...]]></description><category></category></item><item><title><![CDATA[shell及shell script的常用知识记录]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88858371</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88858371</guid><author>adventural</author><pubDate>Sun, 31 Mar 2019 23:29:19 +0800</pubDate><description><![CDATA[shell基础

/etc/shells这个文件存放了系统当前可以使用的shell
/etc/passwd用户登陆时会默认取一个shell操作，而这个登陆取得的shell就记录在/etc/passwd这个文件内
.bash_history记录前一次登陆以前所执行的命令，这一次的命令放在临时内存中，注销登陆后才写入文件
bash支持通配符查询与命令执行，如ls -l /usr/bin/X*

变量的...]]></description><category></category></item><item><title><![CDATA[Linux文件与压缩]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88784115</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88784115</guid><author>adventural</author><pubDate>Tue, 26 Mar 2019 23:19:23 +0800</pubDate><description><![CDATA[shutdown命令

shutdown -h now　立刻关机
shutdown -h 20:23　20:23关机
shutdown -h 10	　10分钟后关机
shutdown -h 10 'the machine will be shutdown after 10 minitus'

改变文件属性与权限

chgrp	　改变文件所属用户组
chown	　改变文件拥有者
chmod	　改变文...]]></description><category></category></item><item><title><![CDATA[vi与vim的基本操作]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88809215</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88809215</guid><author>adventural</author><pubDate>Tue, 26 Mar 2019 23:19:07 +0800</pubDate><description><![CDATA[vi的使用
移动光标

i o a进入编辑模式
ESC进入一般模式
Ctrl+f屏幕向下移动一页
Ctrl+b屏幕向上移动一页
n&lt;space&gt;光标向右移动n个字符
按0，光标直接移动到行首
$或者多功能键END光标移动到行末
nG光标移动到第n行
gg光标移动到第一行
/word查找word字符串

删除

x向后删除一个字符
X向前删除一个字符，相当于backspace
nx向后删...]]></description><category></category></item><item><title><![CDATA[C++ IO库基本操作]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88092862</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88092862</guid><author>adventural</author><pubDate>Wed, 06 Mar 2019 12:20:34 +0800</pubDate><description><![CDATA[IO类
为了支持不同种类的IO操作，除了istream和ostream之外，标准库还制定了一些其他的IO类型

头文件iostream
// w开头表示宽字符版对象
istream		wistream	//从流中读取数据
ostream		wostream	//向流中写数据
iostream	wiostream	//读写流


头文件fstream
// w开头表示宽字符版对象
ifstream	...]]></description><category></category></item><item><title><![CDATA[C++ 类成员函数作用域以及构造函数初始值列表]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88067757</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88067757</guid><author>adventural</author><pubDate>Wed, 06 Mar 2019 10:29:48 +0800</pubDate><description><![CDATA[名字查找与类的作用域：
普通查找方式：

在名字所在的块中寻找声明，只考虑在语句之前的声明
如果没找到继续查找外层作用域，也是语句之前的声明
如果没找到，程序报错

定义在类内部的成员函数

首先编译成员的声明（声明中的名字，函数返回类型和参数列表）
直到类全部可见后编译函数体

成员函数中的名字按下面的方式解析

在成员函数内查找该名字的声明，只有使用之前出现的声明 才被考虑
如果在成员函数内没...]]></description><category></category></item><item><title><![CDATA[C++之 lambda表达式]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88204862</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88204862</guid><author>adventural</author><pubDate>Tue, 05 Mar 2019 21:53:33 +0800</pubDate><description><![CDATA[lambda表达式的使用
对于一个对象或者表达式，如果对其可以使用调用运算符，则称他是可调用的，即如果e是可调用的，则我们可以编写代码
e（args），其中args是一个逗号分隔的一个或多个参数的列表，C++中有4种可调用对象，

函数
函数指针
重载了函数调用运算符的类
lambda表达式

一个lambd表达式表示一个可调用的代码单元，我们可以将其理解为一个未命名的内联函数
一个lambda具...]]></description><category></category></item><item><title><![CDATA[PAT 1030 Travel Plan（Dijsktra算法）]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88044825</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88044825</guid><author>adventural</author><pubDate>Thu, 28 Feb 2019 20:56:48 +0800</pubDate><description><![CDATA[题解
这题是Dijsktra算法的变形，更新节点的时候需要考虑花费（相当于有两个权值），当路径相同时花费优先选择花费少的，加一个判断即可
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

const int  maxn=505;
const int  INF=100000000;

using n...]]></description><category></category></item><item><title><![CDATA[PAT 1029 Median]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/88039430</link><guid>https://blog.youkuaiyun.com/adventural/article/details/88039430</guid><author>adventural</author><pubDate>Thu, 28 Feb 2019 18:08:19 +0800</pubDate><description><![CDATA[题解
题意就是给你两个排好序的增序序列，求两个序列合并后的中位数。
Input Specification:
Each input file contains one test case. Each case occupies 2 lines, each gives the information of a sequence. For each sequence, the first positi...]]></description><category></category></item><item><title><![CDATA[PAT 1028 List Sorting自定义比较函数]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/87995933</link><guid>https://blog.youkuaiyun.com/adventural/article/details/87995933</guid><author>adventural</author><pubDate>Wed, 27 Feb 2019 22:50:34 +0800</pubDate><description><![CDATA[这题比较简单，结构体存放三个数据，根据C的不同选择比较函数，sort
原题链接
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

struct Stu
{
    int id;
    string name;
    int grade;
}st...]]></description><category></category></item><item><title><![CDATA[1025 PAT Ranking]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/87904528</link><guid>https://blog.youkuaiyun.com/adventural/article/details/87904528</guid><author>adventural</author><pubDate>Sun, 24 Feb 2019 16:21:41 +0800</pubDate><description><![CDATA[这题一开始看错了，当搜索题做的，思路是建一个二维数组，大小为102的数组每一项用来保存分数小于等于自己下标的人数，也就是0-100项，最后一项保存参与排名的人数，因为是按搜索题做的，最后遍历了一遍map，输出。最后一个测试点大概100ms左右，参考其他常规使用sort排序大概40-60ms
原题链接
代码如下
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;map&amp;g...]]></description><category></category></item><item><title><![CDATA[C/C++ cmp（）函数基本用法]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/87902940</link><guid>https://blog.youkuaiyun.com/adventural/article/details/87902940</guid><author>adventural</author><pubDate>Sun, 24 Feb 2019 14:25:23 +0800</pubDate><description><![CDATA[这里讨论C/C++中自定义排序函数cmp（）的几种写法
1. C标准库函数qsort（）
函数原型void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void * ))
int cmp(const void *a ,const void *b)
{
	return *(int *)a - *(int *)...]]></description><category></category></item><item><title><![CDATA[1023 Have Fun with Numbers简单的大整数乘法]]></title><link>https://blog.youkuaiyun.com/adventural/article/details/87563158</link><guid>https://blog.youkuaiyun.com/adventural/article/details/87563158</guid><author>adventural</author><pubDate>Sun, 17 Feb 2019 22:35:11 +0800</pubDate><description><![CDATA[1023 Have Fun with Numbers （20 分）
Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happen...]]></description><category></category></item></channel></rss>