x01.os.7: 傻子一样的等】的更多相关文章

傻子一样的等 昨日出差,办完事后,下午 2:30,准备进长途汽车站买票回家,被一人拦住,说可以带我进去,车马上就要开了,买票来不及.我以为是汽车司机,就跟了进去.进去后,他打了个电话,说 3:30 车才到,让我先把票买了.我把钱给他,他拿了个代客车票的单子,写了几个字给我,说上车时再换票,然后就走了.人已走,车没来,我拿着写了字的纸,感觉像傻子一样的等.3:30,车来了,我凭那张纸,顺利的上了车.是为记. 保护模式 实模式采取 segemnt:offset 的方式,表示 20 位的内存地址.保护…
时间都去哪儿了 老帕的“花儿为什么这样红”,三分钟引起六次欢呼,却败给了张碧晨.试想一下,如果是人气更高的陈冰,即使唱得和张碧晨一模一样,可能仍然不敌老帕,为什么张碧晨就能取胜呢?有这么个笑话:一人弹琴无人听,但一老妇人听得却潸然泪下.原来她的亡夫是弹棉花的!这虽是个笑话,却一语道破玄机.歌声动人,除了唱功,还有感情因素在里面.假如老帕的”花儿为什么这样红“是 1 分, 那么,张碧晨的父女情为 1 分, ”时间都去哪儿了“为 1 分.2 : 1, 张碧晨胜出也就理所当然了. shell 的实现…
停了两天电,忽然得空闲.找来破吉他,已然不成弦.           丁丁当当敲,敲到电来到.为把时间捡,熬夜三四点. 从我的置顶随笔 x01.Lab.Download 中下载 x01.os.12.tar.gz, 解压后由终端进入 os 目录,输入 bochs  命令即可见到如下界面: 注意下面的四行,分别是 open,write, read, unlink 文件.调用代码如下: void TestA() { int fd, n; char path[] = "/test"; char…
进入内核后,当然不能无所事事.先创建三个进程,分别打印 A,B,C.虽然只是简单的打印,但却是一切扩展的基础,不可等闲视之. 进程切换,涉及一系列的寄存器需要保护,于是,就有了 ProcessStack 结构,代码如下: typedef struct { u32 gs; u32 fs; u32 es; u32 ds; u32 edi; u32 esi; u32 ebp; u32 KernelEsp; u32 ebx; u32 edx; u32 ecx; u32 eax; u32 RetAddr;…
在 x01.os.7 中,借助 freedos,学习了保护模式.但操作系统必须完成引导:boot, 加载内核:loader,kernel,进而管理process,memory,file等. 引导比较简单,开机启动时,CPU 采取硬的方式,直接把 BIOS 载入内存某处运行.这就是电脑启动时按 DEL 键可以看到的画面.此时,无硬盘可以,无内存则不可以.BIOS 是一个只读芯片,但我认为它仍有可写的部分,否则,启动盘设置的保存,就说不通.BIOS 退出时,它会检测启动盘 0 扇区的最后两个字节,是…
硬盘不同于软盘,它是要分区的.这时,mbr(master boot record)便不可少了.安装 os 硬盘的第一扇区,开始有一小段不多于 446 字节的程序,然后是分区表 512-446-2 字节,然后是引导标志 0xAA55 两字节.这一小段程序,便是 mbr 的主体.mbr 首先将其自身复制到 0x0600 处,代码如下: ; 0x7C00 => 0x0600 mov si, sp push si mov di, 0x0600 mov cx, 0x200 cld rep movsw 这是…
准备工作  1.确保是 win xp,如是 win 8,运行 nasm 需按提示同意安装组件.  2.确保 src 和 z_tools 在同一目录下,nasm 已包含在 z_tools 文件夹中.  3.bmp.nasm 需用 nasm.exe 编译,格式为 -f win32,参看 app/makefile.  4.app/haribote.rule 文件作了少许修改.使用方法  1.进入 src 文件夹,双击 cmd.bat,在命令行窗口分别输入如下命令即可: cd apilib make c…
在 windows 中写操作系统,需要一系列的辅助工具.在此,要感谢川谷秀实!所有工具,都在 z_tools 文件夹中.有了大师的帮助,不妨也来尝试在 windows 中写一把 OS. 源代码及工具可到 x01.Lab.Download 中下载.进入 src 文件夹,只有两个文件,一个是 run.bat, 一个是 boot.s.boot.s  都是大同小异的,skip!run.bat 内容如下: ..\z_tools\nask boot.s boot.bin boot.txt ..\z_tool…
为什么学习 linux 正如不能依靠美国的 GPS 为我们的导弹指示目标一样,很难想像用运行 windows 的电脑去同美国进行信息战.而朝鲜的网络崩溃,再次警示国人,信息战.网络战离我们并不遥远.linux 的开源,可以按自己的要求进行深度定制,无疑是极佳选择. 为什么是 linux-0.11 现在的 linux-3.18,近千万行代码,即使是 linus,也没有全部看完,更不用说拿来学习了.而 linux-0.11,只有万余行代码,拿来学习,从量上是正好. 进入 linux-3.18/arc…
linux 0.0 是一个丢失的版本,但赵炯老师又在 linux 0.11 的基础上,使它起死回生.www.oldlinux.org 有大量资源可供下载,值得一看. 1.要编译运行,首先需安装:sudo apt-get install bin86,取其 as86,ld86 也. 2.makefile 有两点要注意,一是 ld  的入口为 0,二是使用 objcopy 对 head 进行转换拷贝. 3.代码可到我的置顶随笔 x01.lab.download 中下载 x01.los.0.tar.gz…
张碧晨在韩国学的不是技巧,而是基本功:气息!声音由气息托着,似真声而不是真声,似假声又不是假声,所以才能在动听的地方唱得更动听.编程也是一样,基本功很重要:内存!所谓的黑客高手,攻击的一大手段,便是利用了内存泄漏. 纸娃娃 操作系统,看上去很美,效果图如下: 如果细究代码,发现只是一张皮而已.但内存把控能力,却不容小视. *((int*)0x0fe8) = (int)p; 这是干什么?完全是在操作内存啊!这样的例子,比比皆是.在程序 a.hrb 的讲解中,更干脆用二进制编辑器打开,直接操作了一把…
学习的最好方法就是看代码,所以我们不妨跟着 IPC 的调用路线图,来学习学习 IPC. 从 x01.Lab.Download 下载代码后,首先进入 main.c 文件,在 TestA 中,有这么一句:Print("<Ticks:%x>", GetTicksIPC()); 其中,GetTicksIPC 就是通过 IPC 获取时间 tick 数.进入 GetTicksIPC,会看到如下代码: m.type = M_GetTicks; _SendReceive(M_Both, T…
从 x01.Lab.Download 中下载源代码,进入工程目录,make 后再 bochs,即可见到如下界面: 随便打几个字,ok!按 F2,可切换到第二个终端,界面如下: 当然,按 F3 还可切换第三个终端,但同第二个基本一样,就不再浪费空间了. 输入输出,涉及到键盘和显示器.键盘,主要是操作 8048 编码器,8042 控制器.显示器,则是操作 VGA 系统的寄存器.方方面面,非一人之力,非一时之功,是一个逐渐完善积累的过程.于渊讲解详细精当,只是切换 tty 时,他的是 Alt + F1…
<Orange'S 一个操作系统的实现>源代码 <Linux 0.11 内核完全注释>源代码 linux-0.12 源代码:  解决了 Not Owner 问题 闲来无事,在 64 位 ubuntu-16 中,把 Orange'S 和 linux-0.11 又重新实现了一遍,运行无误. 这两本书,可在百度中搜索获取,自不待言. Orange‘S 需要注意的是,为 <sys/cdefs.h> 需安装 libc-dev-i386; 终端运行如下命令即可: sudo apt…
1.首先运行如下命令  sudo apt-get install wget bc build-essential gawk genisoimage 2.下载如下资源,make all 即可 http://pan.baidu.com/s/1nvc09yp 本来有此两条已经足够了,发布时却来了个不足 150 字,内容全部丢失.这应该是 bug,即使不让发布,也没有必要丢失.没办法,只好说点废话. 第一条仍然无话可说. 第二条,相信能帮到你,因为下载时,尤其 syslinux 耗时不少且不成功,非常之…
新组装了个 64 位电脑,i5 CPU,进入 ubuntu 后,又是一通搜索设置,整理如下,以备后用. 安装 .dep 包 sudo dpkg -i [filename.dep] 在 ubuntu 中访问 windows 分区 sudo ntfsfix [/dev/sda1] 安装 flash 插件 sudo apt install adobe-flashplugin 自动上网链接(DSL) sudo pon dsl-providersudo poff 输入法配置 im-config 安装 bi…
Linux Inside 是中文版,值得下载一读. 先把目标设低点,开机进入后,在屏幕上打印“Loading..."即可.由于要在 bochs 中运行,首先就是安装 bochs.Oldlinux 中有相关资源,可自行下载.winxp 和 linux 的配置脚本如下: # for windows bochs config megs : romimage: file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-…
在 linux 中编译 linux, 于是 linux 便有了再生能力.这不同于自然界的缓慢进化,可用神速来形容.—— 和强大的 windows 相抗衡,便是证明! 我在 ubuntu 中的编译方法如下: 1.在 www.kernel.org 中下载 linux-3.18 内核源代码并解压到 /home/linux,由终端进入该目录,输入命令:make help ,可先看看所提供的操作. 2.输入: sudo make i386-defconfig ,可获取默认配置. 3.输入: sudo ma…
M:存储器A:累加器R:寄存器SEGR:段寄存器IMM:立即数X:标志位状态依运算或操作结果而定U:相应标志位未定义-:不影响 数据传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义 MOV M,A 10(14) 1 3 - A-->M MOV A,M 10(14) 1 3 - M-->A MOV R1,R2 2 - 2 - R2-->R1 MOV R,M 8(12)+EA 1 2-4 - M-->RMOV M,R 9(3)+EA 1 2-4 - R-->MMOV R…
DOS 功能调用(INT 21)-------------------------------AH = 0-2E 适用 DOS 1.0 以上版本AH = 2F-57 适用 DOS 2.0 以上版本AH = 58-62 适用 DOS 3.0 以上版本------------------------------- AH = 00功能:程序终止(同 INT 20h)调用参数: CS = 程序段前缀 AH = 01功能:键盘输入并回显返回参数: AL = 输入字符 AH = 02功能:显示输出调用参数:…
这只是一点准备工作.为了显示字符串,需要调用中断:int  0x10 (AH=0x13).具体参数设置,参考我的归纳整理如下: INT 10 (AH = 0) -----------------功能:设置显示方式调用参数:    AL = 00:40 * 25 黑白方式         01:40 * 25 彩色方式         02:80 * 25 黑白方式         03:80 * 25 彩色方式         04:320 * 200 彩色图形方式         05:320…
在 Mac OS X 上安装 TensorFlow 这个文档说明了如何在 Mac OS X 上安装 TensorFlow. 注意:从 1.2 版本开始,在 Mac OS X 上 TensorFlow 不再支持 GPU. 确定如何安装 TensorFlow 你可以选择一种方式安装 TensorFlow,支持下面的几种选择: virtualenv "本地" pip Docker 从源代码安装,更专业有单独的文档记录 我们建议使用 virtualenv 安装.virtualenv 是一个和其…
1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就 可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序.这个字符串看起来有点儿古怪,但是JavaScript很容易 解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构.特点: json:JavaScript 对象表示法(Ja…
1.序列化 定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就 可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序.这个字符串看起来有点儿古怪,但是JavaScript很容易 解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构. 特点: json:JavaScript 对象表示法(J…
参考https://studygolang.com/pkgdoc 导入方式: import "os" os包提供了操作系统函数的不依赖平台的接口 一开始简单举个例子: package main import( "fmt" "os" "log" ) func main() { file, err := os.Open("test.txt") if err != nil{ log.Fatal(err) } da…
#################################总结##################### os常用 os.makedirs('baby/安哥拉/特斯拉/黄晓明') os.mkdir("baby/安哥拉/特斯拉/lvb") # 上层文件夹必须存在 os.rmdir("baby/baobao/baby/黄晓明") # 指定文件夹删除 print(os.path.dirname(r"D:\python_workspace_s18\day2…
# import time # print(time.time()) #秒数 # print('开始下载') # time.sleep(2) # print('下载完成') # print(time.localtime()) # 东八区上海 time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=14, tm_min=32, tm_sec=22, tm_wday=2, tm_yday=100, tm_isdst=0) # prin…
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path = os.path.abspath('C:/Administrator/PycharmProjectsled3/模块/day 19/ 课堂回顾,作业.py') print(path) #结果: C:\Administrator\PycharmProjectsled3\模块\day 19\ 课堂回顾…
os : 与操作系统交互的模块 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如…
# 1 random 模块 随机选择# import random#随机取小数# ret = random.random() #空是0到1之间的小数字# print(ret)# # 0.07997289873078917# uniform 统一的# print(random.uniform(10,12))# 11.341669118364248# 随机取整数# 1print(random.randint(1,10))# 5 随机整取1 到10 的数字# 2# print(random.randr…