汇编
文章平均质量分 81
donnyxia1128
学无止境;
展开
-
lea指令用作运算
比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov Loc原创 2011-07-14 22:40:33 · 1670 阅读 · 0 评论 -
CMPXCHG8B - 比较并交换 8 字节
说明比较 EDX:EAX 中的 64 位值与操作数(目标操作数)。如果这两个值相等,则将 ECX:EBX 中的 64 位值存储到目标操作数。否则,将目标操作数的值加载到 EDX:EAX。目标操作数是 8 字节内存位置。对于一对 EDX:EAX 与 ECX:EBX 寄存器,EDX 与 ECX 包含 64 位值的 32 个高位,EAX 与 EBX 包含 32 个低位。此指令可以配合 LOCK转载 2012-03-26 15:50:39 · 2914 阅读 · 0 评论 -
AT&T汇编指令
AT&T汇编指令GAS中每个操作都是有一个字符的后缀,表明操作数的大小。C声明GAS后缀大小(字节)charb1shortw2(unsigned) int / long / char*l4fl转载 2012-03-28 19:51:34 · 1666 阅读 · 0 评论 -
arm下的gcc内联汇编
arm下的gcc内联汇编 __asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。带有C/C++表达式的内联汇编格式为: __asm__ __volatile__("Instruction List" : Output : Input : Clobber/Modif转载 2012-03-28 20:07:17 · 1691 阅读 · 0 评论 -
InterlockedCompareExchange128
InterlockedCompareExchange128 Visual Studio 2010 - Visual C++_InterlockedCompareExchange128Microsoft SpecificPerforms a 128-bit interlocked compare and exchange.unsigned char _转载 2012-03-31 14:31:21 · 2396 阅读 · 0 评论 -
linux _InterlockedCompareExchange128的实现
#include namespace types { struct uint128_t { uint64_t lo; uint64_t hi; } __attribute__ (( __aligned__(16 ))); } templateclass T >inline bool cas(volatile T * src,原创 2012-04-01 17:55:47 · 2626 阅读 · 0 评论 -
lea实现加法
LEA是INTEL颇为得意的一条指令(虽然大多数程序员并不以为然)。在INTEL OPTIMIZATION REFERFENCE MANUAL中,特别提到了这条指令的好处。0.LEA指令具有单时钟周期,执行效率很高。1.它是CPU地址生成单元参与运算的,而不是ALU参与运算的,所以在流水线上不会与上下文的算术逻辑指令产生流水相关2.INTEL指令集中不存在很多RISC机器所转载 2012-06-11 20:49:40 · 1486 阅读 · 0 评论