CacheMemory::CacheMemory(const dir_t &v_assoc, const dir_t &v_mem_size, const dir_t &v_block_size){ //df set_assoc(v_assoc); set_mem_size(v_mem_size); set_block_size(v_block_size); initialize(); }
int main() { int a = 10; int b = 20; swap(&a,&b); char choice; pid=0; free_block = init_free_block(mem_size); //初始化空闲区 for(;;) { display_menu(); //显示菜单 fflush(stdin); choice=getchar(); //获取用户输入 switch(choice) { case '1': set_mem_size(); break; //设置内存大小 case '2': set_algorithm();flag=1; break; //设置分配算法 case '3': new_process(); flag=1; break; //创建新进程 case '4': kill_process();flag=1; break; //删除进程 case '5': display_mem_usage(); flag=1; break; //显示内存使用 case '0': do_exit(); exit(0); //释放链表并退出 default: break; } getchar(); } }
main(){ char choice; pid=0; struct free_block_type * pre,* fbt; int addr=DEFAULT_MEM_START; printf("初始化可用表长度(>1):\n"); scanf("%d",&block_num); free_block = init_free_block(mem_size); //初始化空闲区 pre=free_block; block_num--; set_mem_size(pre); fbt=free_block; while(block_num>0){ addr=pre->size+pre->start_addr; pre = init_free_block(mem_size); //初始化空闲区 pre->start_addr=addr; set_mem_size(pre); fbt->next=pre; fbt=pre; block_num--; } while(1) { display_menu(); //显示菜单 fflush(stdin); choice=getchar(); //获取用户输入 switch(choice){ case '1':// set_mem_size(); break; case '2': set_algorithm();flag=1; break; case '3': new_process(); flag=1; break; case '4': kill_process(); flag=1; break; case '5': display_mem_usage(); flag=1; break; case '0':do_exit();exit(0); default: break; } } }
void merge_memattrs (rtx x, rtx y) { int i; int j; enum rtx_code code; const char *fmt; if (x == y) return; if (x == 0 || y == 0) return; code = GET_CODE (x); if (code != GET_CODE (y)) return; if (GET_MODE (x) != GET_MODE (y)) return; if (code == MEM && MEM_ATTRS (x) != MEM_ATTRS (y)) { if (! MEM_ATTRS (x)) MEM_ATTRS (y) = 0; else if (! MEM_ATTRS (y)) MEM_ATTRS (x) = 0; else { rtx mem_size; if (MEM_ALIAS_SET (x) != MEM_ALIAS_SET (y)) { set_mem_alias_set (x, 0); set_mem_alias_set (y, 0); } if (! mem_expr_equal_p (MEM_EXPR (x), MEM_EXPR (y))) { set_mem_expr (x, 0); set_mem_expr (y, 0); set_mem_offset (x, 0); set_mem_offset (y, 0); } else if (MEM_OFFSET (x) != MEM_OFFSET (y)) { set_mem_offset (x, 0); set_mem_offset (y, 0); } if (!MEM_SIZE (x)) mem_size = NULL_RTX; else if (!MEM_SIZE (y)) mem_size = NULL_RTX; else mem_size = GEN_INT (MAX (INTVAL (MEM_SIZE (x)), INTVAL (MEM_SIZE (y)))); set_mem_size (x, mem_size); set_mem_size (y, mem_size); set_mem_align (x, MIN (MEM_ALIGN (x), MEM_ALIGN (y))); set_mem_align (y, MEM_ALIGN (x)); } } fmt = GET_RTX_FORMAT (code); for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) { switch (fmt[i]) { case 'E': /* Two vectors must have the same length. */ if (XVECLEN (x, i) != XVECLEN (y, i)) return; for (j = 0; j < XVECLEN (x, i); j++) merge_memattrs (XVECEXP (x, i, j), XVECEXP (y, i, j)); break; case 'e': merge_memattrs (XEXP (x, i), XEXP (y, i)); } } return; }