浮点数反汇编指令

;////////////////////////////////////////////////////////////////////////////////

;////                     浮点数载入指令 

;///////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fld   memory(real)    ; 将存储器中的实型压人堆栈 

fild  memory(integer) ;将存储器的整型数值转化为浮点数并压人堆栈 

fbld  memory(BCD)     ;将存储器的BCD码转化为浮点数并压人堆栈 

fld    st(num)        ;将浮点型寄存器中的数值压入堆栈 

fld1  (none)          ;1.0压人堆栈 

fldz  (none)          ;0.0压人堆栈 

fldpi (none)         ;Π(pi) 压人堆栈 

fldl2e (none)         ;log2(e)压人堆栈 

fldl2t (none)         ;log2(10)压人堆栈 

fldlg2 (none)         ;log10(2)压人堆栈 

fldln2 (none)         ;loge(2)压人堆栈 

finit (none)         ; 初始化浮点型单元,并清空8个寄存器的内容 

;////////////////////////////////////////////////////////////////////////////////

;////                  浮点数数据存储指令 

;///////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fst    st(num)         ;复制st的值来替换st(num)的内容;只有st(num)是受到影响 

fstp   st(num)         ;复制st的值来替换st(num)的内容;st出栈 

fst    memory(real)    ;复制st的值为实型数,存入存储器;堆栈不受影响 

fstp   memory(real)    ;复制st的值为实型数,存入存储器;st出栈 

fist   memory(integer) ;复制st的值,并转换为整型数存入存储器 

fistp  memory(integer) ;复制st的值,并转换为整型数存入存储器;st出栈 

fbstp  memory(BCD)     ;复制st的值,并转换为BCD码存入存储器;st出栈 

fxch   (none)          ;互换st和st(1) 

fxch   st(num)         ;互换st和st(num) 

;///////////////////////////////////////////////////////////////////////////////

;///                 浮点型加法指令 

;//////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fadd   (none)          ; 将st和st(1)出栈;将两个值相加;并将它们的和入栈 

fadd   st(num),st      ;将st(num)和st相加;用和替换st(num) 

fadd   st,st(num)      ;将st和st(num)相加;用和替换st 

fadd   memory(real)    ; 将st和存储器中的实型数相加;用和替换st 

fiadd  memory(integer) ;将st和存储器中的整型数相加,用和替换st 

faddp  st(num),st      ;将st(num)和st相加,用和来替换st(num),将st出栈

;//////////////////////////////////////////////////////////////////////////////

;///                 浮点型乘法指令 

;//////////////////////////////////////////////////////////////////////////////

; 助记符 操作数          功能 

fmul     (none)         ;将st和st(1)出栈;并将它们的值相乘;乘积人栈 

fmul    st(num),st      ;将st(num)和st相乘;用乘积来替换st(num) 

fmul    st,st(num)      ;将st和st(num)相乘;用乘积来替换st 

fmul    memory(real)    ;将st和存储器中的实型数相乘;用乘积来替换st 

fimul   memory(integer) ;将st和存储器中的整型数相乘,用乘积来替换st 

fmulp   st(num),st      ;将st(num)和st相乘;乘积来替换st(num);并将st出栈

;助记符 操作数          功能 

fsub  (none)          ;将st和st(1)出栈,计算st(1)减st的值;将差入栈

fsub  st(num),st      ;计算st(num)减st的值;用差值替换st(num) 

fsub  st,st(num)      ;计算st减st(num)的值;用差值来替换st 

fsub  memory(real)    ;计算st减存储器中的实型数的值;用差值来替换st 

fisub memory(integer) ;计算st减存储器中的整型数的值;用差值替换st 

fsubp st(num),st     ; 计算st(num)减st的值;用差值替换st(num);将st出栈 

fsubr (none)         ;将st和st(1)出栈;计算st减st(1)的 值;将差值入栈 

fsubr st(num),st     ; 计算st减st(num)的值,用差值替换st(num) 

fsubr st,st(num)     ; 计算st(num)减st的值,用差值来替换st 

fsubr memory(real)   ; 计算存储器中的实型数值减st的值,用差值替换st 

fisubr memory(integer) ;计算存储器中的整型数值减st的值;用差值替换st 

fsubrp st(num),st     ;计算st减st(num)的值,用差值替换st(num);将st出栈 

;//////////////////////////////////////////////////////////////////////////////

;///                     浮点型除法指令 

;//////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fdiv   (none)         ;将st和st(1)出栈;计算st(1)/st的值;并将商入栈 

fdiv   st(num),st     ;计算st(num)/st的值;用商来替换st(num) 

fdiv   st,st(num)     ;计算st/st(num)的值;用商来替换st 

fdiv   memory(real)   ;计算st/存储器中的实型数;用商来替换st 

fidiv  memory(integer);计算st/存储器中的整型数;用商来替换st 

fdivp  st(num),st     ;计算st(num)/st的值;用商来替换st(num);并将st出栈 

fdivr  (none)         ;将st和st(1)出栈;计算st/st(1)的值;并将商入栈 

fdivr  st(num),st     ;计算st/st(num)的值;用商来替换st(num) 

fdivr  st,st(num)     ;计算st(num)/st的值;用商来替换st 

fdivr  memory(real)   ;计算存储器中的实型数/st;商来替换st 

fidivr memory(integer);计算存储器中的整型数/st;用商来替换st 

fdivrp st(num),st    ;计算st/st(num)的值,用商来替换st(num);并将st出栈 

;//////////////////////////////////////////////////////////////////////////////

;///                      附 加的浮点型指令 

;/////////////////////////////////////////////////////////////////////////////

; 助记符 操作数          功能 

fabs   (none)         ;st := |st|(绝对值) 

fchs   (none)         ;st := -st(相反数) 

frndint (none)        ;对st取整 

fsqrt  (none)         ;用st的平方根来替换st 

;/////////////////////////////////////////////////////////////////////////////

;///                      浮点型比较指令 

;////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fcom   (none)          ;比较st和st(1) 

fcom   st(num)         ;比较st和st(num) 

fcom   memory(real)    ;比较st和存储器中的实型数

ficom  memory(integer) ;比较st和存储器中的整型数 

ftst   (none)          ;比较st和0.0 

fcomp  (none)          ;比较st和st(1);然后出栈 

fcomp  st(num)         ;比较st和st(num);然后出栈 

fcomp  memory(real)    ;比较st和存储器中的实型数;然后出栈

fcomp  memory(integer) ;比较st和存储器中的整型数;然后出栈 

fcompp (none)         ;比较st和st(1);然后两次出栈 

;////////////////////////////////////////////////////////////////////////////

;///                   混 合浮点型指令

;////////////////////////////////////////////////////////////////////////////

;助记符 操作数          功能 

fstsw   memoryWORD     ;复制状态寄存器到存储器字 

fstsw   ax              ;复制状态寄存器到ax寄存器 

fstcw   memoryWORD     ;复制控制字寄存器到存储器 

fldcw   memoryWORD     ;复制存储器字到控制字寄存器
时间: 2024-11-05 23:29:20

浮点数反汇编指令的相关文章

汇编语言:浮点数传送指令

1.FLD 指令格式: FLD STReg/MemReal 指令功能: 将浮点数据压入协处理器的堆栈中.当进行内存单元内容压栈时,系统会自动决定传送数据的精度.比如:用DD或REAL4定义的内存单元数值是单精度数等. STReg是处理器堆栈寄存器ST(0)~ST(7). 例如: .387 data1  DWORD 123, -543 data2  REAL8 -321.5 data3  REAL10 2.5 …… FLD  data1  ;压一个单精度数据进栈 FLD  data2  ;压一个双

反汇编基本原理与x86指令构造

反汇编基本原理与x86指令构造 概要:旨在讲述程序的二进制代码转换到汇编.即反汇编的基本原理.以及 x86 架构的 CPU 的指令构造,有这个基础后就能够自己编写汇编程序了,也能够将二进制代码数据转换成汇编助记指令.当然,把本文当作手冊的阅读指导也是能够的.本文还讲述了 DEBUG 工具的部分功能.32位平台下有一个 DEBUG32 版本号能够配合 DOSBOX 工具执行在 Windos 7 这些 NT 系统上,DEBUG 要使用 MSDOS 5.0 版本号中的.这是一个十分实用的工具,它同一时

协处理器的三大类数据传送指令

转载于:http://cs.fjzs.edu.cn/ketang/hbyy/11-3-2.htm 11.3.2 数据传送指令 为了满足协处理器和CPU之间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令.协处理器的指令系统中有三大类数据传送指令:BCD传送指令.浮点数传送和整数传送指令. 一.BCD传送指令 1.FBLD 指令格式:FBLD MemBCD(*)指令功能:将内存中的BCD数据压入协处理器的堆栈中: (*) MemType是指定数据类型Type的内存单元,如:M

基于arm的C++反汇编 数组和指针的寻址

数组在函数内 数组作为参数 数组作为返回值 下标寻址和指针寻址 下标值为整型常量的寻址 下标值为整型变量的寻址 下标值为整型表达式的寻址 数组越界 多维数组 存放指针类型数据的数组 指向数组的指针变量 函数指针 ??虽然数组和指针都是针对地址操作,但它们有许多不同之处.数组是相同数据类型的数 据集合,以线性方式连续存储在内存中:而指针只是一个保存地址值的4字节变量.在使用中,数组名是一个地址常量值,保存数组首元素地址不可修改,只能以此为基地址访问内 存数据:而指针却是一个变量,只要修改指针中所保

汇编,浮点运算符,fldpi,fmul等指令说明.

协处理器指令系统 协处理器共有68条不同的指令,汇编程序在遇到协处理器指令助记符时,都会将其转换成机器语言的ESC指令,ESC指令代表了协处理器的操作码. 协处理器指令在执行过程中,需要访问内存单元时,CPU会为其形成内存地址.协处理器在指令执行期间内利用数据总线来传递数据.80287协处理器利用I/O地址00FAH-00FFH来实现其与CPU之间的数据交换,而80387~Pentium系列芯片,则是利用I/O地址800000FAH-800000FFH来实现这两者之间的数据交换. 一.指令操作符

基本反汇编算法

在机器码中 数据与代码都是相同的二进制数字,你无法判断那些数据是代码 那些数据是数据 反汇编文件都有自己的文件格式,window下的pe文件,liunx下的eldf文件,这些类型文件含有一种机制就可以用来确定文件中包含的代码和代码入口点,通常表现为层级文件头的形式 线性扫描反汇编 确定反汇编指令位置的方式:一条指令结束,另一条指令开示的地方 确定起始位置最为困难:扫描被程序文件标注为代码的节所包含的全部的机器指令,线性扫描完整个代码段 线性扫描并不会识别分支等非线性指令来了解程序的控制流 优点:

信息安全设计基础第八周期中总结

信息安全系统设计基础期中总结 [学习时间:8h] [学习内容:考试试题及书本重点的复习] 一.书本重点内容 1.信息就是“位+上下文”. 2.三种数字:无符号数.有符号数(2进制补码).浮点数,信息安全系同学从逆向角度考虑为什么会产生漏洞? 整数运算和浮点数运算会有不同的数学属性是因为他们处理数字表现有限性的方式不同.整数的表示虽然只能编码一个较小的范围,但这种表示是精确的:而浮点数表示的范围相对较大,但是这种表示只是近似的. 3.技巧:如果要使用C99中的“long long”类型,编译时可以

20144306《网络对抗》PC平台逆向破解

实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell.正常情况下这个代码是不会被运行的.我们实践的目标就是想办法运行这个代码片段.我们将学习三种方法运行这个代码片段,然后学习如何注入运行任何Shellcode. 实践三种方法 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数. 利用foo函数的Bof漏

20145339顿珠达杰 《网络对抗技术》 逆向与Bof基础

目的 通过一些方法,使能够运行本不该被运行的代码部分,或得到shell的使用: 将正常运行代码部分某处call后的目标地址,修改为另一部分我们希望执行.却本不应该执行的代码部分首地址(这需要我们有一定的权限修改可执行文件) 通过缓冲区溢出:输入数据,使其超出缓冲区大小,并覆盖住返回地址(新的返回地址为另一部分我们希望执行.却本不应该执行的代码部分首地址) ...... 基础知识 objdump -d test :反汇编test more : more命令和cat的功能一样都是查看文件里的内容,但