摘要:
eal指令是非常神奇的一个指令,它可以取一个存储器操作数的地址,并且将其赋给目的操作数。如果用C语言当中来对应的话,它就相当于&运算。 比如对于leal 4(%edx,%edx,4),%eax这条指令来讲,我们假设%edx寄存器的值为x的话,那么这条指令的作用就是将 4 + x + 4x = 5x 阅读全文
摘要:
mov指令 mov指令的作用是将源操作数S中的数据复制到目的操作数D中,mov指令有一个数据格式和两个操作数,因此一般的形式为[movx S D]。其中x为数据格式,S为源操作数,D为目的操作数。 这里举一个简单的例子,比如我们有一条指令为movl %edx %eax。那么它的执行过程就如下图所示。 阅读全文
摘要:
无符号数加法 对满足0 =< x, y<2w的x和y有: 例如:无符号数65535 + 1 为10000000000000000,由于超过16位,所以截断后0~15位都是0,因此结果为0 结果为0 补码加法运算 补码加法运算就是先按照无符号加法进行运算,而后在进行无符号和有符号的转换 对满足 -2w 阅读全文
摘要:
扩展 无符号数扩展:将一个无符号数转换为一个更大的数据类型,我们只需要简单的在二进制序列前面添加 0 即可 有符号数的扩展:将其补码数字转换为一个更大的数据类型,我们需要在开头添加符号位,即在前面补符号位 如果我们原始位为[xw-1 , xw-2 , … , x2 , x1 , x0],那么扩展k位 阅读全文
摘要:
有符号数转换为无符号数 比较两个等式: (1) (2) 我们计算(1)-(2) = xw-12w (3) 我们可以得到 :B2U = xw-12w + B2T 将x用T2B替代,则:B2U(T2B)= T2U = x + xw-12w 位xw-1决定了x是否为负 据此 我们可以得到公式: 相应的转换 阅读全文
摘要:
无符号数的编码 假设有一个w位的无符号整数,我们可以将位向量写成[xw-1 , xw-2 , … , x2 , x1 , x0]。其中每个xi都取值为0或1,我们用一个函数B2Uw(Binary to unsigned,长度为w)来表示: 函数B2U将一个长度为w的0、1串映射到非负整数: 对于一个 阅读全文