x86 串操作指令
方向标志位 DF方向标志位 DF 是 EFLAGS 寄存器中的 bit-10,用于指明串操作的方向。 SI/ESI/RSI 寄存器中的 S 代表 “源” (只配合 DS 段使用) DI/EDI/RDI 寄存器中的 D 代表 “目标”(只配合 ES 段使用) DF 为 0 时,每次操作之后,SI/ESI/RSI、DI/EDI/RDI 寄存器递增 D...
方向标志位 DF方向标志位 DF 是 EFLAGS 寄存器中的 bit-10,用于指明串操作的方向。 SI/ESI/RSI 寄存器中的 S 代表 “源” (只配合 DS 段使用) DI/EDI/RDI 寄存器中的 D 代表 “目标”(只配合 ES 段使用) DF 为 0 时,每次操作之后,SI/ESI/RSI、DI/EDI/RDI 寄存器递增 D...
EFLAGSx86 处理器的 EFLAGS 寄存器有很多位,但是与条件分支相关的是其中的 5 位: ZF bit6,零标志位。执行指令之后,其结果为 0 时,该标志位置 1,不为 0 时置 0。 SF bit7,符号标志位。执行指令之后,其结果为负数时,该标志位置 1,否则置 0。 CF bit0,进位标志位。执行指令之后,发生向超出最高位进位,或者从超出最高位借位时,该标志位置 1,...
数据定义段定义 .text 定义代码段 .data 定义数据段 .bss 定义未初始化数据段 .rodata 定义只读数据段 数据段(.data)定义数据元素 伪指令 数据类型 .ascii 文本字符串 .asciz 文本字符串(后面加\0结尾) .byte 字节值(8位整数) .short 16位整数 .int 32位整数 .long 32位整数 .qu...
CPUID 程序CPUID 是一条获取 CPU 信息的指令,以寄存器 EAX 作为输入信息的参数,执行该指令之后,会输出具体结果到 EBX、ECX、EDX 寄存器上面,具体会输出什么信息,由输入参数寄存器 EAX 决定。 CPUID 指令具体使用的寄存器 EAX 的不同的输入选项如下所示: EAX值 CPUID 输出 0 厂商 ID字符串(Vendor ID)与支持的最大的 CP...
C99 标准中,给 C 语言引入了 restrict 限定符,与 const 和 volatile 不同的是,restrict 限定符只能修饰指针。 restrict 限定符告诉编译器,该指针指向的对象,只能通过该指针进行唯一引用,不能通过别的指针直接或者间接的方式进行修改该对象。restrict 限定符可以让编译器对指针操作进行放心的优化,以提升性能。 举以下例子说明,以得到一个详细的认知...