计算机系统2:
lea指令为取地址指令,可以将地址存于寄存器中,LEAw(x,y,z)w为增量,x为基本地址,y*z为增量。
二元操作数第二个为des 即 add a b des为b。
移位操作分为逻辑移位和算数移位:逻辑补符号 算数补0
乘法和除法只给出一个操作数,另一操作数:乘法%rax,除法%rdx:%rax(两个拼接而成) 目的操作数:乘法 %rdx:%rax,除法商%rax、余数%rdx。故而在使用乘除法时,如果该寄存器有内容则需要先保存。
条件码寄存器其值描述最近的算术或逻辑操作,改变标志位指令cmp(des - src),test(&)。用set来设置条件码。
jmp指令如果是相对寻址 ,则需要记得!!!执行jmp指令时,pc已经达到下一条指令的位置,故而需要考虑偏移地址而非与jmp的偏移地址。
算法:
凸包问题的求解,通过排序寻找边缘点进行连接切割,进行分治。而边线之内的点则不需要继续关注,只需关注外方点是否能继续构成凸包
矩阵乘法问题求解,将矩阵乘法分块分成4分,进行7次乘法与多次加法进行原来8次乘法的替换,其核心在于,其他乘法中也隐含了某一乘法的信息,故而可以通过加减法获得。
大数相乘问题求解,将数据切分为两份,使用交叉乘法,减少乘法次数
A:A1(10^n/2)+A2 (位置+) B = B1(10^n/2)+B2
A*B = A1*B1+A1*B2+A2*B1+A2*B2;
A*B = A1B1(10^n)+[(A1-A2)(B2-B1)+A1B1+A2B2](10^n/2)+A2B2