1.可以修改IP,或同时修改CS和IP的指令统称转移指令。有两种类型转移: (1)只修改IP是段内转移,如:jmp ax (2)修改CS和IP是段间转移,如:jmp 1000:02.操作符offset是一个伪指令,它的功能是取得标号的偏移地址。3.jmp为无条件转移,可以只修改IP,也可以同时修改C...
分类:
其他好文 时间:
2014-08-09 21:03:39
阅读次数:
264
问题背景是这样的:随着处理器内流水线越来越长,主频越来越高,分支问题带来的性能损失就越来越明显了。根据统计,分支指令占指令总数的10%(静态),15%(动态)。也就是说平均每处理6~7条指令就出现一条条件转移指令。比如流水线的深度为25,当出现条件转移时,整个流水线都需要被刷新,这个性能损失是难以容忍的。尽管可以采用分支预测等手段来减缓条件转移带来的开销,但并不能彻底解决问题。
我们首先来研究一下分支指令的执行速度:
ExecTime = PredictTime + FailRate * FailPenal...
分类:
其他好文 时间:
2014-08-05 22:39:20
阅读次数:
309
1.操作符offset
操作符offset在汇编语言中是由编译器处理的符号,他的功能是取得标号的偏移地址
比如下面程序:
assume cs:codesg
codesg segment
start:mov ax,offset start
相当于mov ax,0
s:mov ax,offset s
相当于mov ax,3
codesg ends
end start
在上...
分类:
其他好文 时间:
2014-07-22 22:59:34
阅读次数:
506
疯狂的暑假学习之 汇编入门学习笔记 (九)—— call和ret
参考: 《汇编语言》 王爽 第10章
call和ret都是转移指令。
1. ret和retf
ret指令:用栈中的数据,修改IP内容,从而实现近转移
相当于:
pop ip
retf指令:用栈中的数据,修改CS和IP,从而实现远转移
相当于:
pop ip
pop cs
例子:ret
assume cs:code,ss:stack
stack segment
db 16 dup(1)
stack ends
code seg...
分类:
其他好文 时间:
2014-07-16 10:32:37
阅读次数:
267
疯狂的暑假学习之 汇编入门学习笔记 (八)—— 转移指令
参考: 《汇编语言》 王爽 第9章
可以修改ip或者同时修改cs和ip的指令统称为转移指令。
8086CPU转移行为分为:
段内转移:只修改ip
段间转移:同时修改cs和ip
段内转移按ip修改的范围可分为:
短转移:ip修改范围 -128~127
近转移:ip修改范围 -32768~32767
转移指令分为:
无条件转移指令。如 jmp
条件转移指令
循环指令。如 loop
过程。
中断。...
分类:
其他好文 时间:
2014-07-14 11:08:04
阅读次数:
206
Ret 和 call 也是转移指令,但是他们跟jmp不同的是,这两个转移指令都跟栈有关系。
ret
用栈中的数据修改IP的地址,从而实现近转移
( ip ) = ( (ss)*16+ sp )
( sp ) =( sp ) + 2
相当于pop ip
retf
用栈中的数据来修改CS以及IP的值,实现段间转移
( ip ) = ( (ss)*16+ sp )
( sp ) =...
分类:
其他好文 时间:
2014-06-22 20:14:23
阅读次数:
151
能修改CS以及IP的指令都是转移指令。它分为段内转移,段间转移。
段内转移:只修改IP的值
段间转移:同时修改CS以及IP的值
段内转移根据转移的距离远近分为:短转移,近转移
短转移:转移范围为-128 – 127
近转移:转移范围为-32768 –32767
根据转移情况又分为:
无条件转移指令
条件转移指令
循环指令
过程
中断
jmp short...
分类:
其他好文 时间:
2014-06-18 07:21:15
阅读次数:
189