摘要: #include int hash(const char *str) { int sum = 0; for (int i=0;;i++) { if (str[i] == '\0') break; sum += ((int)str[i] * 10 + i); } return sum%2069; } int main(int argc, char **a... 阅读全文
posted @ 2019-03-15 17:18 SKY_VIEW 阅读(271) 评论(0) 推荐(0)
摘要: 这些变换会导致维度的变化,可以是线性的,也可以是非线性的 阅读全文
posted @ 2019-01-30 10:14 SKY_VIEW 阅读(253) 评论(0) 推荐(0)
摘要: 语法树,还可以看作是一个函数调用关系树, 每一个节点都是一个函数,其子节点是这个函数的参数,参数的类型可以是函数本身,因此递归是免不了的,因此,这样来看待语法树,就有了一种最简洁的认识。 阅读全文
posted @ 2018-12-24 15:31 SKY_VIEW 阅读(1024) 评论(0) 推荐(0)
摘要: 光,电,影,流动的水,只要用心去发现,物理无处不在。 阅读全文
posted @ 2018-12-15 11:02 SKY_VIEW 阅读(204) 评论(0) 推荐(0)
摘要: co 有协作的意思,是让多个 routine 合作来完成某件或者某几件事情,它主要解决的问题就是合理安排一些耗时长的工作的执行时间,让其他的工作有机会得到执行。 阅读全文
posted @ 2018-12-03 10:17 SKY_VIEW 阅读(150) 评论(0) 推荐(0)
摘要: 总结: 实际上只有一种结构,都是 do-while 结构 阅读全文
posted @ 2018-11-29 14:42 SKY_VIEW 阅读(161) 评论(0) 推荐(0)
摘要: 1.这是整形乘法指令,无论是 unsigned int 还算是 signed int 实际上指令都是进行相同的运算,只不过最终的结果是由程序中的类型来做相应的解读 2.imul 指令实际上不会发生 overflow,因为积会按乘数最大位数的两倍的位数来存放 3.二进制乘法,可以转换成对被乘数进行一些 阅读全文
posted @ 2018-11-28 21:15 SKY_VIEW 阅读(5313) 评论(0) 推荐(0)
摘要: 1. PC 总是指向下一条将要被执行的指令,而不是指向正在被执行的指令,这是有道理的,因为执行指令不是一个 atom 过程,而是分成了好多步骤,在执行指令的过程中 cpu 完全有可能将下一条将要执行的指令的地址加载到 PC 中。 2. jg 指令后面跟 rep;ret 两条指令,而不是直接跟 ret 阅读全文
posted @ 2018-11-28 17:36 SKY_VIEW 阅读(349) 评论(0) 推荐(0)
摘要: 之所以不用 “推导”,或者“转化”,是因为放在句子中都会产生表意上的问题 这不是一个推导的过程,推导的话存在因果逻辑关系,映射不存在 这也不是一个转化的过程,因为正则表达式不是文法,本质不同的东西不能用转化,如果从一种文法转化成另一种文法,这时候可以用转化 语法分析的核心就是文法 阅读全文
posted @ 2018-11-26 22:43 SKY_VIEW 阅读(753) 评论(0) 推荐(0)
摘要: 这个指令相当于 sub 指令,除了它不改变 flag寄存器之外的寄存器 而 sub 因为 在二进制层面上的位操作都是相同的,也就是说, unsigned subtract 和 signed substract 是同时执行的,所以无论 unsigned compare 还是 signed compar 阅读全文
posted @ 2018-11-16 14:04 SKY_VIEW 阅读(897) 评论(0) 推荐(0)
摘要: 小数部分乘以2,之后的数,整数部分如果是1 该位就是1, 否则该位就是0 继续对剩余的小数部分使用上述过程 阅读全文
posted @ 2018-11-14 10:53 SKY_VIEW 阅读(1548) 评论(0) 推荐(0)
摘要: 如果不用 DFA, NFA,我觉得也是可以处理编译过程的,一个字符一个字符的读入,并结合上下文,来确定 token 阅读全文
posted @ 2018-11-10 13:23 SKY_VIEW 阅读(170) 评论(0) 推荐(0)
摘要: cpu可以向其他cpu发送中断,也可以向单独某一个cpu发送中断 每个 cpu 都有一个时钟中断源 阅读全文
posted @ 2018-11-07 16:23 SKY_VIEW 阅读(914) 评论(0) 推荐(0)
摘要: The most important difference is they use different memory, the kernel mode thread can access any kernel memory, while the user mode can only access t 阅读全文
posted @ 2018-11-07 16:16 SKY_VIEW 阅读(392) 评论(0) 推荐(0)
摘要: Because that means context switching(save context, restore context) 阅读全文
posted @ 2018-11-07 15:58 SKY_VIEW 阅读(200) 评论(0) 推荐(0)
摘要: 以前一直认为操作系统是处于领导地位的软件,然后由它统一调配进程的运行,现在觉得可以换一种看法,把 kernel 看作是进程的一部分,因为本来所有的进程都共享 kernel 内存, 还有一种认识就是,整个系统只有一个程序,那就是操作系统 阅读全文
posted @ 2018-11-07 15:57 SKY_VIEW 阅读(123) 评论(0) 推荐(0)
摘要: #include #include #include int main() { regex_t rgx; char *pattern = "^[[:alnum:]]*$"; char *str = "shabi"; if (regcomp(&rgx, pattern, REG_EXTENDED | REG_NOSUB) != 0) { pe... 阅读全文
posted @ 2018-11-06 09:45 SKY_VIEW 阅读(824) 评论(0) 推荐(0)
摘要: 主干是7个phase,对应7个模块,每一个模块的输入都是上一模块的输出 阅读全文
posted @ 2018-11-05 16:55 SKY_VIEW 阅读(215) 评论(0) 推荐(0)
摘要: 编译程序的核心组件 lexical analyzer syntax analyzer semantic analyzer intermediate code generator machine independent code optimizer code generator machine dep 阅读全文
posted @ 2018-10-31 23:14 SKY_VIEW 阅读(135) 评论(0) 推荐(0)
摘要: 积跬步,行万里 阅读全文
posted @ 2018-10-31 14:47 SKY_VIEW 阅读(182) 评论(0) 推荐(0)