Example #1
0
int main(int argc, char** argv){
  if(argc != 2){
    printf("Usage: sacs <source-file>\n");
    return 0;
  }

  struct asm_binary* bin = asm_parse_file(argv[1]);

  mem_init();
  mem_dynamic_alloc(0x400000,MEM_FAKE_ALLOC|MEM_USE_LOCKED);
  uint32_t loc = mem_dynamic_alloc(bin->size,MEM_USE_LOCKED);
  assert(loc == 0x400000);
  memcpy(mem_translate_addr(loc),bin->binary,bin->size);

  struct exec_stats_t* stats = exec_run(loc,loc,loc+bin->data_segment);

  mem_cleanup();

  printf("C: %d\nIC: %d\nNOPs: %d\n",stats->c,stats->ic,stats->nopc);
  return 0;
}
Example #2
0
void
loads(size_t len, size_t range, size_t stride, 
	int parallel, int warmup, int repetitions)
{
	double result;
	size_t count;
	struct mem_state state;

	if (range < stride) return;

	state.width = 1;
	state.len = range;
	state.maxlen = len;
	state.line = stride;
	state.pagesize = getpagesize();
	count = 100 * (state.len / (state.line * 100) + 1);

#if 0
	(*fpInit)(0, &state);
	fprintf(stderr, "loads: after init\n");
	(*benchmark_loads)(2, &state);
	fprintf(stderr, "loads: after benchmark\n");
	mem_cleanup(0, &state);
	fprintf(stderr, "loads: after cleanup\n");
	settime(1);
	save_n(1);
#else
	/*
	 * Now walk them and time it.
	 */
	benchmp(fpInit, benchmark_loads, mem_cleanup, 
		100000, parallel, warmup, repetitions, &state);
#endif

	/* We want to get to nanoseconds / load. */
	save_minimum();
	result = (1000. * (double)gettime()) / (double)(count * get_n());
	fprintf(stderr, "%.5f %.3f\n", range / (1024. * 1024.), result);

}
Example #3
0
int main(void){
  printf("Initializing\n");
  mem_init();

  printf("Allocating 1MB\n");
  uint32_t loc = mem_dynamic_alloc(1<<20,0);
  printf("Got address 0x%X\n",loc);
  
  printf("Writing 192342\n");
  mem_write32(loc,192343);

  printf("Reading...\n");
  uint32_t result = mem_read32(loc);
  printf("Read %d\n",result);

  printf("Freeing\n");
  mem_free(loc);

  printf("Cleaning up\n");
  mem_cleanup();

  return 0;
}