Browsed by
Month: March 2017

[Linux 0.11] Draft 4 GCC Assembly

[Linux 0.11] Draft 4 GCC Assembly

全文参考 https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended-Asm 阅读文档永远比阅读博客能获得更多的信息哦~ 本文对 GCC Assembly 进行总结和介绍,也是个人的笔记,欢迎各位指正,内容供参考 * Basic Asm — 基本不能用的 assembly * Extended Asm 功能强大的可扩展的ASM

[Archlinux] 如何解决搜狗输入法炸掉的问题

[Archlinux] 如何解决搜狗输入法炸掉的问题

近期不知道什么蜜汁更新导致fcitx-sogoupinyin可能由于魔幻的力量崩溃。而且看错误毫无头绪(炸在奇怪的glibc的函数里) 因此这里提供一个玄学尝试的办法 rm ~/.config/SogouPY pgrep fcitx | xargs kill 再启动fcitx 以及sogou-qimpanel 也许就能救回来哦~ 【又水了一篇文章】

[Linux 0.11] Draft 2 80386 System Architecture

[Linux 0.11] Draft 2 80386 System Architecture

此文对 Intel 80386 的系统架构进行一定程度的说明 80386 在系统层面支持下面的功能 保护 内存管理 多任务 IO 异常和中断 初始化 协处理器,多处理技术 调试功能 上述均通过系统寄存器以及指令来支持,下面会对这些进行介绍 系统寄存器(Registers) 系统寄存器分为如下几类 EFLAGS 内存管理寄存器 控制寄存器 (Control Registers) 调试寄存器 (Debug Registers) 测试寄存器 (Test Registers) 下面对每一类寄存器进行说明 System FLAGS EFLAGS 中的 System FLAG 可以控制如 IO, 可屏蔽中断,任务切换,调试等功能。 IF: 用来控制系统是否接受(可屏蔽的)外部中断请求 IF = 0 为屏蔽 NT: 此位用于控制 Chain interrupted 以及 called tasks, 该位会影响 IRET 指令的操作方式 RF: debug 有关的 flag TF: debug 有关的 flag,将处理器设置为单步执行模式,在这个模式下,所有的指令CPU都会产生一个异常,可以在每一个指令处停下来进行调试 VM: 用于进入 Virtual 8086 Mode 的 flag 这里不做解释 内存管理寄存器 与内存分段管理相关的寄存器,如全局描述符表,中断描述符表,也就是 GDT, LDT, IDT 和 Task 的描述信息存储用的寄存器 GDTR LDTR…

Read More Read More

[Linux 0.11] Draft 1 Assembly

[Linux 0.11] Draft 1 Assembly

REP前缀 对 源 和 目的 地址的数据进行某些操作 汇编指令形式为 rep <INSTRUCTION> INSTRUCTION 可以是 mov 系列(movb, movw, …) 也可以是 movs 系列,  还可以是cmps系列 该指令涉及到的寄存器有 标志寄存器(DF位) ECX ESI EDI ECX是计数器,用来指定操作的次数 ESI 指定源地址 EDI 指定目的地址 (很好记辣 Source Index (SI) Destination Index (DI)) 当处理 movs 的时候,如果 DF = 0 就是表示 ESI 指向要复制的块的开头,EDI 指向目的块的开头,DF = 0 的时候这两个就变成指向末尾了   JMPI 间接跳转 在实模式下,指定段地址和偏移量,将会设置IP以及CS 磁盘参数表 磁盘参数表存在中断向量0x41中 第二个磁盘的参数表存在0x46中   开启A20地址线 A20地址线关闭状态县 限制最多仅能寻址到1MB空间,更大的空间将会循环 开启方法如下:   字符串比较指令 SCAS, SCASB, SCASW, SCASD AX, ES, DI FLAGS(DF) 比较 AL(AX)(EAX) 与 ES:[DI] 的值,不保留结果,仅保留FLAGS。 根据后缀(B,W,D)的不同,比较的字节数也不同 根据方向位(D FLAG)决定比较之后DI寄存器是增长还是减少 可以与REP前缀一起使用…

Read More Read More