滴水逆向_学习笔记

滴水逆向第三期学习笔记


浮点指令集

<h2>////////////////////////////////////////////////////////////////////////////////</h2> <h2>//// 浮点数载入指令</h2> <h2>///////////////////////////////////////////////////////////////////////////////</h2> <p>助记符 操作数 功能</p> <p>fld memory(real) ; 将存储器中的实型压入堆栈(FPU LOAD DATA)</p> <p>fild memory(integer) ;将存储器的整型数值转化为浮点数并压入堆栈(FPU INT LOAD DATA)</p> <p>fbld memory(BCD) ;将存储器的BCD码转化为浮点数并压入堆栈</p> <p>fld st(num) ;将浮点型寄存器中的数值压入堆栈</p> <p>fld1 (none) ;1.0压入堆栈</p> <p>fldz (none) ;0.0压入堆栈</p> <p>fldpi (none) ;Π(pi) 压入堆栈</p> <p>fldl2e (none) ;log2(e)压入堆栈</p> <p>fldl2t (none) ;log2(10)压入堆栈</p> <p>fldlg2 (none) ;log10(2)压入堆栈</p> <p>fldln2 (none) ;loge(2)压入堆栈</p> <p>finit (none) ; 初始化浮点型单元,并清空8个寄存器的内容</p> <h2>;////////////////////////////////////////////////////////////////////////////////</h2> <h2>;//// 浮点数数据存储指令</h2> <h2>;///////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fst st(num) ;复制st的值来替换st(num)的内容;只有st(num)是受到影响</p> <p>fstp st(num) ;复制st的值来替换st(num)的内容;st出栈</p> <p>fst memory(real) ;复制st的值为实型数,存入存储器;堆栈不受影响</p> <p>fstp memory(real) ;复制st的值为实型数,存入存储器;st出栈</p> <p>fist memory(integer) ;复制st的值,并转换为整型数存入存储器</p> <p>fistp memory(integer) ;复制st的值,并转换为整型数存入存储器;st出栈</p> <p>fbstp memory(BCD) ;复制st的值,并转换为BCD码存入存储器;st出栈</p> <p>fxch (none) ;互换st和st(1)</p> <p>fxch st(num) ;互换st和st(num)</p> <h2>;///////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 浮点型加法指令</h2> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fadd (none) ; 将st和st(1)出栈;将两个值相加;并将它们的和入栈</p> <p>fadd st(num),st ;将st(num)和st相加;用和替换st(num)</p> <p>fadd st,st(num) ;将st和st(num)相加;用和替换st</p> <p>fadd memory(real) ; 将st和存储器中的实型数相加;用和替换st</p> <p>fiadd memory(integer) ;将st和存储器中的整型数相加,用和替换st</p> <p>faddp st(num),st ;将st(num)和st相加,用和来替换st(num),将st出栈</p> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 浮点型乘法指令</h2> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <p>; 助记符 操作数 功能</p> <p>fmul (none) ;将st和st(1)出栈;并将它们的值相乘;乘积入栈</p> <p>fmul st(num),st ;将st(num)和st相乘;用乘积来替换st(num)</p> <p>fmul st,st(num) ;将st和st(num)相乘;用乘积来替换st</p> <p>fmul memory(real) ;将st和存储器中的实型数相乘;用乘积来替换st</p> <p>fimul memory(integer) ;将st和存储器中的整型数相乘,用乘积来替换st</p> <p>fmulp st(num),st ;将st(num)和st相乘;乘积来替换st(num);并将st出栈</p> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 浮点型减法指令</h2> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fsub (none) ;将st和st(1)出栈,计算st(1)减st的值;将差入栈</p> <p>fsub st(num),st ;计算st(num)减st的值;用差值替换st(num)</p> <p>fsub st,st(num) ;计算st减st(num)的值;用差值来替换st</p> <p>fsub memory(real) ;计算st减存储器中的实型数的值;用差值来替换st</p> <p>fisub memory(integer) ;计算st减存储器中的整型数的值;用差值替换st</p> <p>fsubp st(num),st ; 计算st(num)减st的值;用差值替换st(num);将st出栈</p> <p>fsubr (none) ;将st和st(1)出栈;计算st减st(1)的 值;将差值入栈</p> <p>fsubr st(num),st ; 计算st减st(num)的值,用差值替换st(num)</p> <p>fsubr st,st(num) ; 计算st(num)减st的值,用差值来替换st</p> <p>fsubr memory(real) ; 计算存储器中的实型数值减st的值,用差值替换st</p> <p>fisubr memory(integer) ;计算存储器中的整型数值减st的值;用差值替换st</p> <p>fsubrp st(num),st ;计算st减st(num)的值,用差值替换st(num);将st出栈</p> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 浮点型除法指令</h2> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fdiv (none) ;将st和st(1)出栈;计算st(1)/st的值;并将商入栈</p> <p>fdiv st(num),st ;计算st(num)/st的值;用商来替换st(num)</p> <p>fdiv st,st(num) ;计算st/st(num)的值;用商来替换st</p> <p>fdiv memory(real) ;计算st/存储器中的实型数;用商来替换st</p> <p>fidiv memory(integer);计算st/存储器中的整型数;用商来替换st</p> <p>fdivp st(num),st ;计算st(num)/st的值;用商来替换st(num);并将st出栈</p> <p>fdivr (none) ;将st和st(1)出栈;计算st/st(1)的值;并将商入栈</p> <p>fdivr st(num),st ;计算st/st(num)的值;用商来替换st(num)</p> <p>fdivr st,st(num) ;计算st(num)/st的值;用商来替换st</p> <p>fdivr memory(real) ;计算存储器中的实型数/st;商来替换st</p> <p>fidivr memory(integer);计算存储器中的整型数/st;用商来替换st</p> <p>fdivrp st(num),st ;计算st/st(num)的值,用商来替换st(num);并将st出栈</p> <h2>;//////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 附 加的浮点型指令</h2> <h2>;/////////////////////////////////////////////////////////////////////////////</h2> <p>; 助记符 操作数 功能</p> <p>fabs (none) ;st := |st|(绝对值)</p> <p>fchs (none) ;st := -st(相反数)</p> <p>frndint (none) ;对st取整</p> <p>fsqrt (none) ;用st的平方根来替换st</p> <h2>;/////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 浮点型比较指令</h2> <h2>;////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fcom (none) ;比较st和st(1)</p> <p>fcom st(num) ;比较st和st(num)</p> <p>fcom memory(real) ;比较st和存储器中的实型数</p> <p>ficom memory(integer) ;比较st和存储器中的整型数</p> <p>ftst (none) ;比较st和0.0</p> <p>fcomp (none) ;比较st和st(1);然后出栈</p> <p>fcomp st(num) ;比较st和st(num);然后出栈</p> <p>fcomp memory(real) ;比较st和存储器中的实型数;然后出栈</p> <p>fcomp memory(integer) ;比较st和存储器中的整型数;然后出栈</p> <p>fcompp (none) ;比较st和st(1);然后两次出栈</p> <h2>;////////////////////////////////////////////////////////////////////////////</h2> <h2>;/// 混 合浮点型指令</h2> <h2>;////////////////////////////////////////////////////////////////////////////</h2> <p>;助记符 操作数 功能</p> <p>fstsw memoryWORD ;复制状态寄存器到存储器字</p> <p>fstsw ax ;复制状态寄存器到ax寄存器</p> <p>fstcw memoryWORD ;复制控制字寄存器到存储器</p> <p>fldcw memoryWORD ;复制存储器字到控制字寄存器</p>

页面列表

ITEM_HTML