摘要: 我们在讨论语言的时候,经常会听到一个词叫图灵完备。图灵完备的语言在表达能力上是相等的。 但是图灵机的描述是计算机尚未出现的年代,其所用纸带,读写头的表述方式并不方便理解。 在这里我尝试一下,从一种和图灵机相似的简单语言出发,描述出现代高级语言的特征。 语言定义 1:可以定义数组(对应图灵机的无限长纸 阅读全文
posted @ 2018-07-12 23:42 原建业 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 函数参数的传递用的是通用寄存器或堆栈,是可以由编译器来决定的,不过一般都会遵守特定规则,以GCC为例,看一下其在X86和X64上是什么情况 测试代码: 在X64平台上,生成的部分汇编文件: 可以看到,对于六个参数的函数,依次用了edi, esi, edx, ecx, r8d, r9d六个寄存器实现参 阅读全文
posted @ 2018-07-12 21:21 原建业 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 在阅读内核代码的时候,明白了内核是通过页表项中的标志位_PAGE_READ,_PAGE_WRITE,_PAGE_EXECUTE来区分页的权限的。 进程在内核中的地址空间代码段,数据段,堆,栈之间最大的区别也是权限的区别,而系统调用mprotect恰好是用来改变内存页的权限的。 是否可以通过mprot 阅读全文
posted @ 2018-07-12 20:53 原建业 阅读(649) 评论(0) 推荐(0) 编辑