伪代码

2019-2020-1学期 20192421 《网络空间安全专业导论>>第三周学习总结

孤街浪徒 提交于 2019-12-02 01:39:38
在简略学习了第六章和第七章的内容后,我对计算机的程序设计层有了新的了解,这两章分别从低级程序设计语言与伪代码以及问题求解与算法设计两个方面对程序设计层进行了阐述,下面是我的收获与问题。 *** 第六章低级程序设计语言与伪代码*** 6.1 计算机操作 计算机:计算机是能够存储,检索和处理数据的可编程电子设备。可编程的,存储,检索和处理是这个定义中的操作字。 存储,检索和处理是计算机能够对数据执行的动作。 控制单元执行的指令能够把数据存储到机器的内存中,在计器内存中检索数据,在算数逻辑单元中以某种方式处理数据。 6.2 机器语言 机器语言:由计算机直接使用的二进制编码指令构成的语言。【也是每种机器有的一个特定的能够被执行的操作集合】 Pep/8:一台虚拟机 虚拟机:为了模拟真实机器的重要特征而设计的假想机器。 Pep/8所反映的重要特性 程序计数器(PC):其中包括下一条即将被执行的指令的地址 指令寄存器(IR):其中包含正在被执行的指令的一个副本 累加器(是一个用来保存操作数据和结果的寄存器) 一个字节能够表示的最大十进制数是255,用二进制表示是111111,用十六进制表示是FF。一个字(16位)能够表示的最大十进制数是65535,用二进制表示是1111111111111用十六进制表示是FFFF。如果既要表示正数,又要表示负数,那么在量级上就会少一位(因为有一位用于表示符号)

2019-2020-1学期 20192406 《网络空间安全专业导论》第三周学习总结

纵饮孤独 提交于 2019-12-01 23:31:49
第六章 低级程序设计语言与伪代码 6.1 计算机操作 我们所用的程序设计语言都必须反映出计算机能够执行的操作类型。让我们通过重述计算机的定义来开始新的讨论:计算机是能够存储、检索和处理数据的可编程电子设备。 这个定义中的操作字包括 可编程的 、 存储 、 检索 和 处理 。上一章指出了数据和操作数据的指令逻辑上是相同的,它们存储在相同的地方。这就是“可编程的”这个词的意义所在。操作数据的指令和数据一起存储在机器中。要改变计算机对数据的处理,只需要改变指令即可。 存储、检索和处理 是计算机能够对数据执行的动作。也就是说,控制单元执行的指令能够把数据 存储 到机器的内存中,在机器内存中 检索 数据,在算术逻辑单元中以某种方式 处理 数据。词语“处理”非常通用。在机器层,处理涉及在数据值上执行算术和逻辑操作。 6.2 机器语言 机器语言 :由计算机直接使用的二进制编码指令构成的语言 Pep/8:一台虚拟机 虚拟机 :为了模拟真实机器的重要特征而设计的假想机器 Pep/8反应的重要特征 回忆第5章中所说的,寄存器是中央处理器中算术/逻辑单元的一小块存储区域,它用来存储特殊的数据和中间值。Pep/8有七个寄存器,我们重点研究其中三个: 程序计数器(PC) , 其中包含下一条即将被执行的指令的地址。 指令寄存器(IR) , 其中包含正在被执行的指令的一个副本。 累加器 (是一个寄存器)。

2019-2020-1学期 20192426 《网络空间安全导论》第三周学习总结

空扰寡人 提交于 2019-12-01 23:06:32
第六章 低级程序设计语言与伪代码 1.计算机操作 计算机是能够 存储、检索和处理数据的可编程电子设备。 2.机器语言 计算机语言(machine language):由计算机直接使用的二进制编码指令构成的语言。 Pep/8:一台虚拟机 虚拟机(virtual computer(machine)):为了模拟真实机器的重要特征而设计的假想机器。 Pep/8有39个机器语言指令。 Pep/8反映的重要特性。 Pep/8的内存单元由65536字节的存储空间构成。这些字节从0到65536(十进制)进行编号。 寄存器: 程序计数器(PC),其中包含下一条即将被执行的指令的地址。 指令寄存器(IR),其中包含正在被执行指令的一个副本。 累加器(是一个寄存器)。 累加器是用来保存操作的数据和结果。 指令格式 一条指令由两部分组成,即8位的指令说明符和(可选的)16位的操作数说明符。说明指令符(指令的第一个字节)说明了要执行什么操作(如把一个数加到一个已经存储在寄存器中的值上)和如何解释操作数的位置。操作数说明符(指令的第二和第三字节)存放的是操作数本身或者操作数的地址。有些指令没有操作数说明符。 指令说明符的格式根据表示一个具体操作所用的比特数的不同而不同。在Pep/8中,操作代码(称为操作码)的长度从4比特到8比特不等。我们在这里所用的操作码长度是4比特或5比特

2019-2020-1学期 20192409 《网络空间安全专业导论》第三周学习总结

坚强是说给别人听的谎言 提交于 2019-12-01 23:01:18
第六章 低级程序设计语言与伪代码 1.计算机操作 计算机是能够 存储、检索和处理数据的可编程电子设备。 2.机器语言 计算机语言(machine language):由计算机直接使用的二进制编码指令构成的语言。 Pep/8:一台虚拟机 虚拟机(virtual computer(machine)):为了模拟真实机器的重要特征而设计的假想机器。 Pep/8有39个机器语言指令。 Pep/8反映的重要特性。 Pep/8的内存单元由65536字节的存储空间构成。这些字节从0到65536(十进制)进行编号。 寄存器: 程序计数器(PC),其中包含下一条即将被执行的指令的地址。 指令寄存器(IR),其中包含正在被执行指令的一个副本。 累加器(是一个寄存器)。 累加器是用来保存操作的数据和结果。 指令格式 一条指令由两部分组成,即8位的指令说明符和(可选的)16位的操作数说明符。说明指令符(指令的第一个字节)说明了要执行什么操作(如把一个数加到一个已经存储在寄存器中的值上)和如何解释操作数的位置。操作数说明符(指令的第二和第三字节)存放的是操作数本身或者操作数的地址。有些指令没有操作数说明符。 指令说明符的格式根据表示一个具体操作所用的比特数的不同而不同。在Pep/8中,操作代码(称为操作码)的长度从4比特到8比特不等。我们在这里所用的操作码长度是4比特或5比特

编程中有哪些从一开始就值得坚持的好习惯?

此生再无相见时 提交于 2019-12-01 15:13:13
本文来自知乎上的同名问题,本文对优秀的回答进行了整理,解释权归答主所有,如有侵权请联系删除。 请大家各抒己见,为初学者提供参考。感谢各位。 Yul8ulY: 重视模块化,重视抽象但不滥用 我刚接触编程的时候,在网上看到许多大牛写程序都十分注重模块化,因此我就下意识的模仿他们;后来看SICP,知道了抽象的好处,因此在写程序的时候会仔细思考抽象的问题。这些对我都有着非常大的帮助。 在一篇讲述程序员代码行数瓶颈的博客中(程序员的成长和代码行数的关系)提到,程序员在2k行、20k行、200k行等若干程序规模时会遇到瓶颈,如果不用更科学有效的方法,超过了这个行数代码就会混乱到难以维护。但我第一次写很大的程序时(8k+)并没有感觉到文中提到的瓶颈;我目前接手的项目有近900k行,我自己写的部分也已经快上10k,但我仍然没遇到文中提到的瓶颈。 针对这一现象,我做过一些实验。我在很不认真的写一些小程序时,也总是写的混乱不堪,我发现,这种情况下,程序行数超过200行我就觉的很难受了,在需要进行一点小的修改时,我往往需要花很长时间去寻找到底该改哪里,十分吃力——这种吃力感是我在那些精心思考的大项目里从未感受过的。这说明了,我并没有过人的天赋能在混乱中轻易找出清晰的脉络,那就是说,之前的如鱼得水,是因为好的习惯。 后来,我进行了深入的思考。在模块划分合理、抽象合理的程序里

Pwn-level0

自作多情 提交于 2019-11-30 19:44:43
题目地址 https://dn.jarvisoj.com/challengefiles/level0.b9ded3801d6dd36a97468e128b81a65d 第一步先看文件的属性 64位 之后检查保护性 用IDA打开,观察伪代码F5 跳出hello world,然后返回vulnerable_function函数 这边发现一个可以直接get shell的函数callsystem read函数存在栈溢出,我们可以利用栈溢出把返回地址覆盖程callsystem的入口地址 需要覆盖0x88个字符 代码如下 from pwn import * r=remote('pwn2.jarvisoj.com',9881) payload='a'*0x88+p64(0x400596) r.sendline(payload) r.interactive() 执行 来源: https://www.cnblogs.com/gaonuoqi/p/11637952.html

第九章 伪代码编程过程

痞子三分冷 提交于 2019-11-29 10:08:16
本章从微观上关注编程过程——也就是关注创建单独的类及其子程序的特定步骤。本章还将讲述伪代码编程过程,这种编程有助于减少设计和编写文档所需的工作量,同时提高这两项的工作质量。 创建类和子程序的步骤概述 先对一个类做总体设计,列出这个类内部的特定子程序,创建这些子程序,然后从整体上复查这个类的创建结果。 创建一个类的步骤 创建一个类的关键步骤如下: 创建类的总体设计; 创建类中的子程序; 复审并测试整个类。 创建子程序的步骤 创建子程序涉及到的活动: 设计子程序; 检查设计; 编写子程序的代码; 检查代码。 伪代码 有效使用伪代码的指导原则: 用类似英语的语句来精确描述特定的步骤; 避免使用目标编程语言中的语法元素; 在本意层面上编写伪代码; 在一个足够低的层次上编写伪代码,以便可以近乎自动地从它生成代码。 一段不好的伪代码示例 increment resource number by 1 allocate a dlg struct using malloc if malloc() returns NULL then return 1 invoke OSrsrc_init to initialize a resource for the operating system *hRsrePtr = resource number return 0 一段好的伪代码 keep track of

IDA使用初步

断了今生、忘了曾经 提交于 2019-11-27 16:41:07
shift+F12 搜索中文字符串,通过字符串所在位置定位关键信息。 双击可能出flag的语句跳转至关键字符串。 想F5生成C伪代码,先crtl+X打开交叉引用列表,跳转到另一个结构里的某个函数,然后再F5可以看伪代码。 来源: https://www.cnblogs.com/2019go5/p/11370521.html

JSinDeep1:探索执行环境 (Execution Context)-ES3篇

情到浓时终转凉″ 提交于 2019-11-26 22:48:27
JSinDeep1: 探索执行环境 (Execution Context)-ES3 篇 声明 JSinDeep 系列文章主要内容为作者对 ECMA-262 标准 中一些概念的理解和探究,同时意在帮助大家快速理解。本着严谨的态度,同时又需避免 API 式的枯燥细节罗列。文章会以适当插图、例子去诠释概念,致力于通俗易懂。更具体、严谨、完整的描述建议阅读 ECMA262 文档。碍于作者水平有限,文中若有错误,欢迎大家批评指正。 *其它版本: English-Blog , English-PDF , Chinese-Blog , Chinese-PDF 概要 在我们写JavaScript代码时会定义一些变量、函数等。解释器在执行这些代码时是如何处理并找到我们定义的这些数据的?在程序执行时,引用这些变量等操作的背后都发生了什么?本文主要探讨 ECMA-262-3 标准 中的执行环境 (Execution Context) 及与之相关的一些内部机制和模型。 定义 当程序执行的控制权转移至ECMAScript可执行代码时,会进入到一个执行环境中 (Execution Context,缩写为EC) 。在一个EC内也可能进入到一个新的EC,这些EC逻辑上 1 会形成一个栈 (Stack) 。 EC 是程序运行时动态创建的。例如:每一个函数在被调用时都会创建一个EC,重复调用函数 (包含递归调用的情形