Linux下学习王爽老师的汇编语言

王爽的汇编语言是基于windows下的dos和masm………… 这个让我很无语,因为我平时根本不会去用windows,而且在Linux下也没有masm…… masm与nasm区别开的m应该就是微软的意思。 更让人无语的是,两个编译器的语法还有很大差别…… 因为编译器不同导致语法差别我还是第一次碰到…… 不过汇编作为第一门语言,除了指令以外的伪指令有所不同还是可以理解的。 开始正文。 freedos fochs官网有提供freedos的镜像,所以十分方便。 只要下载这个镜像,再用模拟器去模拟加载就可以了,在解压目录下运行bochs即可自动加载。 bochs镜像 传送门 找第一个就是freedos的镜像。 界面是这样的 之后的操作就完全跟书上的一样了………… 突然发现没办法用masm……这是最僵硬的………… dosemu 没办法,用了dosemu。 dosemu的一个优点在于默认会在它的d盘,挂载你的用户根目录,这就免去修改镜像或者无从挂载的麻烦。 界面是这样的 比起bochs来速度很快,感觉bochs用来模拟dos有点牛…

《汇编语言》的一些小结

今天汇编终于到了,马买皮,早知道这么慢就去京东上买了。 我为什么要学汇编 关于汇编,以前看《深入理解计算机系统》的时候就大致看了一蛤,当然是远远不够的,而且这本书我从大二看到现在也还没看完…… 而我稍微浏览了一下我们这学期的教科书,跟那个煞笔老师一样让我感到很遗憾的是,书上也完全没有汇编。 要是真的学得这么浅的话,就不止是让人遗憾,更是让人觉得失望了。 是的,我已经很自然的认为学习操作系统就需要学并用到汇编,比如MBR还想用什么写,那是直接接触硬件的部分,除了汇编没有其他选择。emmmmm,据说汇编还有其他在debug等追根溯源上作为终极武器有很强的功能,据说啦,据说。不过看了一点之后发现汇编和操作系统在一些部分是很通用的。 另外,在《操作系统真象还原》其实最基础的假设就是读者都已经学了汇编。 顺便吐槽一句,王爽的《汇编语言》居然平台居然是Windows的,醉了。 正文 2017-10-28 00:37:44 星期六 1. 对于一串01字符串,既可以表示命令,也可以表示数据,CPU区分的方式是通过寄存器分割开来。比如说固定让这个寄存器访问命令,让那个寄存器…

《操作系统真象还原》的一些笔记

终于有时间开始搞我的OS Demo了。 希望能在元旦之前搞完。 这里不定时更新记录我在《操作系统真象还原》的一些笔记。以此督促和勉励自己。 很早之前就想看这本书了,之前在一个腾讯员工的书单上看到的,虽然貌似没什么名气,但看了一部分觉得还是挺有趣的,是我能非常乐意看下去的类型。那种带着程序员的幽默而不乏真实技术的书籍。 2017-10-24 23:50:14 星期二 1. 编译器提供库函数,库函数封装了系统调用,这样的代码集合称之为运行库。 2. 用户进程永远不会因为进入了内核态而变身为操作系统。 3. cs: ip。 汇编指令,表示当前执行的指令。cs是代码段寄存器,ip是指令指针寄存器,指令指针计算为 $ cs \times 16 + ip $ 4. DRAM,动态随机访问内存。物理内存,也就是内存条就属于DRAM。其动态并不是内容变化的意思,而是保存时间短,需要顶起的刷新。 5. 地址总线宽度决定可以访问的内存空间容量。书中所说是决定内存空间大小,我觉得应该是容量,或者说是上限,更为合适。…

退役了……

2017年10月22号第三届CCPC哈尔滨站,第二次代表学校出去比赛并且第二次打铁…… 即便是现在了,我依然是心如刀割…… 许颂嘉卡题卡了4个半小时,说句心里话,我无法完全掐灭她的失常发挥间接导致比赛打崩的想法。 但理性的我还是很清楚,这也并不能完全怪她 因为我对数学不是很敏感,没想到素因子,如果我能对了解一点数学就好了,尽管只是一点…… 因为我们的团队配合有问题,我一直在怼我的题,要是我能抽出点时间一直帮许颂嘉解决这个问题就好了…… 因为比赛前我并没有把许颂嘉的一些问题指出来,她写代码会写的很长很乱我在很早之前就知道了,但是当初都A了再加上她自己手速挺快我也没有说什么,现场赛让我帮她看代码就真的很致命…… 因为没有正确发挥陈雨情的作用,老实说,陈雨情虽然菜,特么的经常读错题让我白写,但是在考虑问题方面往往比我们两个都全面。这场也是的……打到一半才让她看…… 因为我太菜了,要是我能先比她出一个题,不仅可以鼓舞士气,说不定手速快点还能拿银牌……但是在后期我急了,应该说是很焦躁,导致最后一题很明显的随机化解法我都没有想到,只是给了它三分钟时间,就说了一句,“好难啊”就…

UVALive 7505 Hungry Game of Ants

老实说,这题我在现场赛大概写不出来。 感觉还是比较需要脑洞。 题意: 一排不同重量的蚂蚁按重量排成一排玩饥饿游戏,每只蚂蚁最开始选择一个方向,左或者右,大蚂蚁吃小蚂蚁,并且使自己增加小蚂蚁的重量,如果重量相同,左吃右。 问 n 只蚂蚁,第 k 只活到最后的方案数。 思路: 直接切入正解。 首先第k只蚂蚁必须选择左边,不然只能被吃。( $n \neq k $ ) 如果想要第 k 只蚂蚁获胜,必须满足以下两个条件 1. $ weight[ max(p_1), k ] > weight[ 0, max(p_1) ) $ 2. $ weight[ 1, min(p_2) ] <= weight( min(p_2), n…

51Nod 1499 图

emmmmmmm不错的的最小割吧 唯一一个不是很好的点就是实在是太容易想到是最小割了,但是没想到具体的建图方法。 题意: 有n个点,m条边,要你分成两个集合,使得两个集合的导出子图各自权值和的和最大。 两个导出子图中,可选择其中一个,若导出子图中存在有两个点 (i,j) 相连,则该导出子图权值增加 $| i-j |$ 。同时另一个导出子图则相反,只有存在两个点没有边相连,才会增加权值。 思路: 题目的主要目的就是将点集分成两部分,这很容易想到二分图染色,但这是不现实的,因为这是一个最值问题,不存在必然关系。 而跟二分图相关的只有网络流了,将图分为两半是割的概念,当然只存在最小割,正面去想的话,就是总权值和-最小割。 然后……思路就断了,找不到有效的建图方法。 可以先这么想,我们假定与源点相连的点集为相连增加权值的集合,并称之为,与汇点相连的点集则相反,称之为汇点集。 那么我们先将每个点都与源点相连,其容量为将该点加入源点集所能增加的权值。 再将这个点与汇点相连,其容量为将该点加入汇点集所能增加的权值。 此时直接跑最小割是不对的,因为这些点并不是独立的。…

CodeForces 864F Cities Excursions

对Tarjan的算法理解有点要求的题,之前看了一下思路,敲了一下结果没过,照着博客改动了一下但并没有搞懂,今天补上。 题意: 给你一个有向图,若干询问,询问为从 s 到 t 的最小字典序路径中,第 k 个点是哪个点。 思路: 首先询问很多,有$4\times10^5$个询问,直接一个一个找肯定是不行的。 但是值得注意的是,点数比较少,只有$3000$个,假如我们固定起点,遍历全图来获得路径,在遍历的同时,对每一个点来记录答案。理想复杂度为$O(N^2)$,时间上满足条件。 一个问题是如何保证字典序最小,emmmm 用vector记录整张图,对于每个点的边进行排序,因为每个点访问一次,解决之。 这题还有一个合理的大坑,如果在遍历的时候,在之前已经出现了一个环,那么之后的所有点就都不会被访问。 当然你不能在找到一个环后,后面的点就不再遍历,…

OwnCloud 作为图床的简易使用方法

今天因为薛昊买VPS了,赚点访问量简单写一下吧。 OwnCloud是开源私有云软件,功能强大,作为图床只是其一个小用法。 我的ACM模板和一些很重要的文件都在上面,在本地与云服务器中都有保存。 DigtalOcean的官方论坛上的关于安装OwnCloud的文章不错,是安装教程的不二选择。传送门 以下是标题相关正文,假设你已经搭建完成 1. 新建一个文件夹,并对其分享。这个文件夹作为我们的图床目录。 2. 在浏览器中打开分享目录。右击图片,点击复制下载链接。 2017-10-28 17:44:53 星期六 更新,mmp,owncloud改了??? 换一个方法,得到分享目录地址后,在后面加上download?path=%2F&files=image.png 即可。 files=后面的是图片文件名 该链接就是可以用markdown,html或者其他显示出来的链接。 就这么简单。 但是在不安装插件的情况下也只有这么一种操作选择。其他都无效。 当然这个方法是有缺点的: 显然其他人如果知道了你的服务器ip,那么你图床上的所有图片都会以一个目录的形式所…