指令分析的一般性总结(三)

程序如何描述指令

我们将这个加法指令的有限状态机用Verilog HDL语言进行描述,用节拍jp做为状态标志,用它指出指令Add状态的描述如下:

 1 case (jp)
 2
 3 0:    begin
 4
 5         jp <= 1;
 6
 7     end
 8
 9 1:    begin
10
11         if  (q_w[15:11]==5‘b00010)
12
13         begin
14
15             Add<=1;
16
17             jp<=2;
18
19         end
20
21     end
22
23 2:    begin
24
25             if  (Add==1)
26
27             begin
28
29                 mar<=q_w[10:0];
30
31                 jp <= 3;
32
33             end
34
35     end
36
37 3:    if  (Add==1)  jp <= 4;
38
39 4:    begin
40
41         if  (Add==1)
42
43         begin
44
45             b<=q_data;
46
47             a<=da;
48
49             jp <= 5;
50
51         end
52
53     end
54
55 5:    begin
56
57         if  (Add==1)
58
59         begin
60
61             da<=a+b;
62
63             pc <= pc+1;
64
65             Add <=0;
66
67             jp <= 0;
68
69         end
70
71     end
72
73 endcase

从第2拍往后,如果程序存储器的地址不变化,可以仍然用q_w[15:11]==5‘b00010来判断Add指令,由于设置了指令标识,并且指令标识不会在程序存储器地址发生变化时改变,那么第2拍往后用Add=1来判断加法指令比较常用。

时间: 2024-10-09 20:38:17

指令分析的一般性总结(三)的相关文章

指令分析的一般性总结(一)

指令编码是指令惟一的标识,是指令相互区别的依据.所谓指令分析,最重要的就是识别指令,根据指令惟一的标识和时序节拍等,来确定这条指令应该如何动作.另外,每条指令所要完成的动作又都是有顺序的,这种顺序是用节拍变量来指示出来的.控制器就是能够识别指令,并且通过节拍来驱动每条指令完成相应必要动作的设备.

指令分析的一般性总结(二)

指令有限状态机 在CPU设计当中,我们要通过节拍的变动,将每条指令随着节拍的变化一一进行描述.指令的每一个顺序步都是一种状态,任何一条指令的顺序步都是有限的.因此人们将对指令顺序步的描述工程称为有限状态机设计.有限状态机设计最常用的有两种基本形式,一是摩尔型,另一种叫米利型.摩尔型状态机的输出只依赖于当前状态:米利型状态机的输出既依赖于当前的状态,也依赖于输入.我们设计CPU不必非要区别是哪一种有限状态机,根据设计的需要,状态怎么描述要依需要而定.CPU的描述一般都是摩尔型和米利型混合,我们就以

自学linux指令分析-vi

自学linux指令分析-vi 1·命令格式 vi  file-list vi [文件名] 2.命令功能 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器. 3.使用方式 执行 vi oldboy.txt进入 vi 编辑器(默认是命令模式),点击 a 或者 i 进入编辑模式, 敲入内容I am studying linux,然后按键盘上的esc键退出编辑模式(进入命令模式), 最后敲 ;wq保存并退出,wq解释 write quit. 如果只是查看,可以

自学linux指令分析-sed

自学linux指令分析-sed 1·命令格式  sed [-nefri]   /输入文本/'command'   文件    2·命令参数 -n                          取消默认输出 -i                            改变输出的内容 -e                          进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑 -f                           指定

自学linux指令分析-ls

自学linux指令分析-ls 1·命令格式 ls [option] [directory-list] ls [参数][目录名] 2·命令参数    -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件. -A, –almost-all 列出除了 . 及 .. 以外的任何项目 –author 印出每个文件的作者 -b, –escape 把文件名中不可输出的字符用反斜杠加字符编号的形式列出. –block-size=大小块以指定<大小>的字节为单位 -B, –ignore-backu

自学linux指令分析-head

自学linux指令分析-head 1·命令格式 head [参数][文件] 2·命令参数 -q                     隐藏文件名 -v                     显示文件名 -c<字节>           显示字节数 -n<行数>           显示的行数 3.命令功能 头部  显示文件头部-n, 行数,默认显示头部10行 4.命令范列 [[email protected] ~]# head -5 ett.txt 12345

自学linux指令分析-seq

自学linux指令分析-seq 1·命令格式 seq - print a sequence of numbers 打印数字序列 2·命令参数 -f                      用来格式化输出 -s                      横着打出来,  seq -s  "  "   5     1 2 3 4 5 -w                     输出同宽数列,不足的位数用0补齐 3.命令功能 打印数字序列,类似echo {1..5} 4.命令范列 [[em

Dalvik指令分析(一) 字节码转换为smali代码

有过android应用反编译或者再打包的朋友都有使用过apktool的经验,apktool能将dex文件的 字节码转换为smali代码,这个工具是怎么做到对dex进行解析并生成smali代码的呢?这就需要对 dex文件的格式很熟悉.需要掌握dalvik指令的字节码格式,并能翻译成对应的smali代码. 我准备写一系列的文章来分析dex文件的格式.dalvik字节码的格式.以及dex to smali的方法, 基于此可以做很多的应用,比如安全扫描.应用加固等等! Dalvik指令介绍请参考官方文档

一个内存增长问题的分析和处理(三)

和框架部门的同事一起,经过valgrind大量的测试和验证,并没有发现有确切的内存泄露的代码段.对于C和C++程序,出现内存增长,可能我们很自然的就去内存泄露方面去思考,有时候,这种方向可能不一定对. 在解决这个问题的过程中,生成上又出现了另外一个内存增长的问题.这次的现象很明显,就是一个进程,能清晰的看到内存在不断的增长,进程停止后,内存就直接释放,下次还是会缓慢增长.大家的思路就是检查下代码,看看有没有内存泄露,由于程序中没有使用new 和 malloc的地方,所以不存在直接的内存操作.这样