5.2.11 字符串操作指令 字符串操作指令的实质是对一片连续存储单元进行处理,这片存储单元是由隐含指针DS:SI或ES:DI来指定的。字符串操作指令可对内存单元按字节、字或双字进行处理,并能根据操作对象的字节数使变址寄存器SI(和DI)增减1、2或4。具体规定如下: (1)、当DF=0时,变址寄存器SI(和DI)增加1、2或4; (2)、当DF=1时,变址寄存器SI(和DI)减少1、2或4。 在
3、双精度移位指令 此组指令有:双精度左移SHLD(Shift Left Double)和双精度右移SHRD(Shift Right Double)。它们都是具有三个操作数的指令,其指令的格式如下: SHLD/SHRD Reg/Mem, Reg, CL/Imm;80386+ 其中:第一操作数是一个16位/32位的寄存器或存储单元;第二操作数(与前者具有相同位数)一定是寄存器;第三操作数是移动的位数
5.2.2 标志位操作指令 标志位操作指令是一组对标志位置位、复位、保存和恢复等操作的指令。 1、进位CF操作指令 、清进位指令CLC(ClearCarry Flag):CF←0 、置进位指令STC(Set CarryFlag):CF←1 、进位取反指令CMC(ComplementCarry Flag):CF←not CF 2、方向位DF操作指令 、清方向位指令CLD(Clear Directio
4、取有效地址指令LEA(LoadEffective Address) 指令LEA是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下: LEA Reg, Mem 该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。其功能如右图所示。 例如: 图5.4 LEA指令的功能示意图 … BUFFER DB 100 DUP(?) … LEA BX, BUFFER ;把字节变量BUFFER在
指令从指令cache的16字节对齐的块中取出,放置在大小是块的两倍的缓存内。 然后指令从"两倍缓存"取出,放在一个通常是16字节,但不需要16对齐的块中传递给解码器。 我们称这些块是"ifetch"(指令携带块)。 如果一个ifetch是跨 16 字节边界的,那么它需要从"两倍缓存"的两个块中读出。 因此"两倍缓存"被设计成有两个块,目的就是为了能跨越16字节边界取指令。 "两倍缓存"能在一个时钟
使用方式 truffle [command] [options] 命令 build 构建一个开发中的app版本,创建.build目录。 truffle build 可选参数 --dist: 创建一个可发布的app版本。仅在使用默认构造器时可用。 查看6. 构建应用章节来了解更多。 console 运行一个控制台,里面包含已初始化,且随时可用的合约对象。 truffle console 一旦控
client kill all 删除全部的客户端 xxx.qihoo.net:8221> client kill all OK xxx.qihoo.net:8221> bgsave 执行方式和redis一样。但是异步dump完后,数据库保存在dump_path目录下,dump出来的数据库包含dump_prefix和dump时间等信息; xxx.qihoo.net:8221> BGSAVE 201
预处理程序指令指示编译器在实际编译开始之前预处理信息。 所有预处理程序指令都以#开头,并且只有空格字符可能出现在一行上的预处理程序指令之前。 预处理程序指令不是语句,因此它们不以分号(;)结尾。 C#编译器没有单独的预处理器; 但是,指令的处理就像有一个指令一样。 在C#中,预处理程序指令用于帮助进行条件编译。 与C和C ++指令不同,它们不用于创建宏。 预处理程序指令必须是一行上的唯一指令。 C
11.3.6 常数操作指令 为了计算的方便,协处理器提供了几个将常用常数压栈的指令。如表11.7所示。 表11.7 常数压栈指令及其常数值 指令格式 指令的功能 指令格式 指令的功能 FLDZ ST=+0.0 FLDL2T ST= log210 FLD1 ST=+1.0 FLDLG2 ST= log102 FLDPI ST=π FLDLN2 ST= loge2 FLDL2E ST=log2e
11.3.3 数学运算指令 在协处理器的指令系统中,有关数学运算指令有:加法指令、减法指令、乘法指令、除法指令和求平方根指令等。涉及数学运算的指令有比例运算、舍入运算、求绝对值运算和改变数值符号运算等指令。 1、加法指令 指令格式: FADD [STReg1, STReg2](*) FADD MemReal FADDP STReg, ST FIADD MemInt (*) 在此指令格式下,如果同时
11.3.2 数据传送指令 为了满足协处理器和CPU之间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、浮点数传送和整数传送指令。 一、BCD传送指令 1、FBLD 指令格式:FBLD MemBCD(*) 指令功能:将内存中的BCD数据压入协处理器的堆栈中; (*) MemType是指定数据类型Type的内存单元,如
9.5 条件汇编伪指令 条件汇编伪指令是告诉汇编程序:根据某种条件确定一组程序段是否加入到目标程序中。使用条件汇编伪指令的主要目的是:同一个源程序能根据不同的汇编条件生成不同功能的目标程序,增强宏定义的使用范围。 条件汇编伪指令与高级语言(如:C/C++)的条件编译语句在书写形式上相似,在所起作用方面是完全一致的。 9.5.1 条件汇编伪指令的功能 条件汇编伪指令的一般格式如下: IFnnnn 条
9.4.2 伪指令IRP 伪指令IRP的作用是用每个参数创建一组语句,其重复次数由伪指令后面参数表中参数的个数来确定。其一般使用格式如下: IRP 形式参数, <实参1, 实参2, ……, 实参n> 重复的语句组 ENDM 例9.11 把16位通用寄存器之值相加,并把结果存入寄存器AX。 解:由于16位通用寄存器名是一些不同的符号,不能用计数的方法来依次访问它们,所以,我们需要用伪指令IRP来实现
9.4 重复汇编伪指令 在编写源程序时,有时会出现连续相同或相似的语句(组)。当出现这种情况时,可利用重复伪指令来重复语句,从而达到简化程序的目的。 重复汇编伪指令所定义的重复块是宏的一种特殊形式,也是由伪指令ENDM来结束重复块。用重复汇编伪指令定义的重复块也可带有参数,并在汇编过程中参数被实参代替,但重复块不会被命名,不能在程序的其它地方引用。 9.4.1 伪指令REPT 伪指令REPT的作用
#include <stdio.h> int global_var; void change_var(){ global_var=100; } int main(void){ change_var(); return 0; } 技巧 在Intel x86处理器上,gdb默认显示汇编指令格式是AT&T格式。例如: (gdb) disassemble main Dump