黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 软件破解 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]软件破解系列教程-第四节浮点指令
      ★★★★

软件破解系列教程-第四节浮点指令

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-3-7 9:01:14

第2章 基础知识 

第四节 浮点指令

对下面的指令先做一些说明:
st(i):代表浮点寄存器,所说的出栈、入栈操作都是对st(i)的影响
src,dst,dest,op等都是指指令的操作数,src表示源操作数,dst/dest表示目的操作数
mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值表示该操作数的内存位数(8位为一字节)
x <- y 表示将y的值放入x,例st(0) <- st(0) - st(1)表示将st(0)-st(1)的值放入浮点寄存器st(0)

1.  数据传递和对常量的操作指令

指令格式

指令含义

执行的操作

FLD src

装入实数到st(0)

st(0) <- src (mem32/mem64/mem80)

FILD src

装入整数到st(0)

st(0) <- src (mem16/mem32/mem64)

FBLD src 

装入BCD数到st(0)

st(0) <- src (mem80)

 

FLDZ

0.0装入st(0)

st(0) <- 0.0

FLD1

1.0装入st(0)

st(0) <- 1.0

FLDPI

pi装入st(0)

st(0) <- ?(ie, pi)

FLDL2T

log2(10)装入st(0)

st(0) <- log2(10)

FLDL2E

log2(e)装入st(0)

st(0) <- log2(e)

FLDLG2

log10(2)装入st(0)

st(0) <- log10(2)

FLDLN2

loge(2)装入st(0)

st(0) <- loge(2)

 

FST dest

保存实数st(0)dest

dest <- st(0) (mem32/mem64)

FSTP dest

 

dest <- st(0) (mem32/mem64/mem80);然后再执行一次出栈操作

FIST dest

st(0)以整数保存到dest

dest <- st(0) (mem32/mem64)

FISTP dest

 

dest <- st(0) (mem16/mem32/mem64);然后再执行一次出栈操作

FBST dest

st(0)BCD保存到dest

dest <- st(0) (mem80)

FBSTP dest 

 

dest<- st(0) (mem80);然后再执行一次出栈操作

2.比较指令

指令格式

指令含义

执行的操作

FCOM

实数比较

将标志位设置为 st(0) - st(1) 的结果标志位

FCOM op

实数比较

将标志位设置为 st(0) - op (mem32/mem64)的结果标志位

 

FICOM op

和整数比较

Flags值设置为st(0)-op 的结果op (mem16/mem32)

FICOMP op

和整数比较

st(0)op比较 op(mem16/mem32)后;再执行一次出栈操作

 

FTST 

零检测 

st(0)0.0比较

FUCOM st(i) 

 

比较st(0) st(i)                  [486]

FUCOMP st(i)      

 

比较st(0) st(i),并且执行一次出栈操作

FUCOMPP st(i)    

 

比较st(0) st(i),并且执行两次出栈操作

FXAM  

 

Examine: Eyeball st(0) (set condition codes)

3.运算指令

指令格式

指令含义

执行的操作

加法

FADD

加实数

st(0) <-st(0) + st(1)

FADD src

 

st(0) <-st(0) + src (mem32/mem64)

FADD st(i),st

 

st(i) <- st(i) + st(0)

FADDP st(i),st 

 

st(i) <- st(i) + st(0);然后执行一次出栈操作

FIADD src  

加上一个整数

st(0) <-st(0) + src (mem16/mem32)

减法

FSUB

减去一个实数

st(0) <- st(0) - st(1)

FSUB src

 

st(0) <-st(0) - src (reg/mem)

FSUB st(i),st

 

st(i) <-st(i) - st(0)

FSUBP st(i),st

 

st(i) <-st(i) - st(0),然后执行一次出栈操作

FSUBR st(i),st

用一个实数来减

st(0) <- st(i) - st(0)

FSUBRP st(i),st

 

st(0) <- st(i) - st(0),然后执行一次出栈操作

FISUB src

减去一个整数

st(0) <- st(0) - src (mem16/mem32)

FISUBR src

用一个整数来减

st(0) <- src - st(0) (mem16/mem32)

乘法

FMUL

乘上一个实数

st(0) <- st(0) * st(1)

FMUL st(i)

 

st(0) <- st(0) * st(i)

FMUL st(i),st

 

st(i) <- st(0) * st(i)

FMULP st(i),st

 

st(i) <- st(0) * st(i),然后执行一次出栈操作

FIMUL src

乘上一个整数

st(0) <- st(0) * src (mem16/mem32)

除法

FDIV 

除以一个实数

st(0) <-st(0) /st(1)

FDIV st(i)

 

st(0) <- st(0) /t(i)

FDIV st(i),st

 

st(i) <-st(0) /st(i)

FDIVP st(i),st

 

st(i) <-st(0) /st(i),然后执行一次出栈操作

FIDIV src 

除以一个整数

st(0) <- st(0) /src (mem16/mem32)

FDIVR st(i),st

用实数除

st(0) <- st(i) /st(0)

FDIVRP st(i),st

 

FDIVRP st(i),st

FIDIVR src  

用整数除

st(0) <- src /st(0) (mem16/mem32)

 

FSQRT

平方根

st(0) <- sqrt st(0)

 

FSCALE

2st(0)次方

st(0) <- 2 ^ st(0)

FXTRACT

Extract exponent:

st(0) <-exponent of st(0); and gets pushed

st(0) <-significand of st(0)

 

FPREM 

取余数

st(0) <-st(0) MOD st(1)

FPREM1

取余数(IEEE),同FPREM,但是使用IEEE标准[486]

 

 

 

FRNDINT 

取整(四舍五入)

st(0) <- INT( st(0) ); depends on RC flag

 

FABS