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...

发布于 技术文章

x86 条件分支指令说明

EFLAGSx86 处理器的 EFLAGS 寄存器有很多位,但是与条件分支相关的是其中的 5 位: ZF bit6,零标志位。执行指令之后,其结果为 0 时,该标志位置 1,不为 0 时置 0。 SF bit7,符号标志位。执行指令之后,其结果为负数时,该标志位置 1,否则置 0。 CF bit0,进位标志位。执行指令之后,发生向超出最高位进位,或者从超出最高位借位时,该标志位置 1,...

发布于 技术文章

x86 AT&T 汇编语法基础与寻址方式

数据定义段定义 .text 定义代码段 .data 定义数据段 .bss 定义未初始化数据段 .rodata 定义只读数据段 数据段(.data)定义数据元素 伪指令 数据类型 .ascii 文本字符串 .asciz 文本字符串(后面加\0结尾) .byte 字节值(8位整数) .short 16位整数 .int 32位整数 .long 32位整数 .qu...

发布于 技术文章

用 CPUID 指令获取处理器信息(书摘)

CPUID 程序CPUID 是一条获取 CPU 信息的指令,以寄存器 EAX 作为输入信息的参数,执行该指令之后,会输出具体结果到 EBX、ECX、EDX 寄存器上面,具体会输出什么信息,由输入参数寄存器 EAX 决定。 CPUID 指令具体使用的寄存器 EAX 的不同的输入选项如下所示: EAX值 CPUID 输出 0 厂商 ID字符串(Vendor ID)与支持的最大的 CP...

发布于 技术文章

C99 中的 restrict 限定符

C99 标准中,给 C 语言引入了 restrict 限定符,与 const 和 volatile 不同的是,restrict 限定符只能修饰指针。 restrict 限定符告诉编译器,该指针指向的对象,只能通过该指针进行唯一引用,不能通过别的指针直接或者间接的方式进行修改该对象。restrict 限定符可以让编译器对指针操作进行放心的优化,以提升性能。 举以下例子说明,以得到一个详细的认知...

发布于 技术文章
123