例如:一个简单的C语言程序如下: for (i = 10; i <= 1010; i++) c[i] = a[i] + b[i+5] ; 对于这个简单的循环程序,在一般标量处理机中需要如下指令序列来实现: 采用多寄存器结构的两地址指令编写程序。存储器采用字节编址方式,字长为32位。 A、B、C分别是向量a、b、c在内存中的起始地址。 START:LOAD R0, ST ;读循环初值,10 LOAD R1, ED ;读循环终值,1010 LOAD R2, L ;读内存地址增量,常数4 MOVE R3, R2 MUL R3, R0 ;向量偏移量,初始值为40 LOOP:LOAD R4, A(R3) ;读A向量的一个元素 LOAD R5, B(R3) ;读B向量的一个元素 ADD R4, R5 STORE R4, C(R3) ;写C向量的一个元素 ADD R3, R2 ;改变向量偏移量 INC R0 ;测试次数增1 CMP R0, R1 ;测试循环是否结束 BLE LOOP ;循环未结束转LOOP,否则继续 HALT ST: 10 ;循环初值 ED: 1010 ;循环终值 L: 4 ;内存地址增量 .END START 在标量处理机上用10多条指令,其中有8条指令要循环100次。如果在向量处理机上,可以只用一条指令: |