Skip to content
Snippets Groups Projects
Verified Commit 5b11c6b8 authored by Recolic Keghart's avatar Recolic Keghart
Browse files

trial

parent 6f8b0120
No related branches found
No related tags found
1 merge request!2Performance tune
...@@ -19,8 +19,8 @@ include Makefile.git ...@@ -19,8 +19,8 @@ include Makefile.git
CXX ?= g++ CXX ?= g++
LD = $(CXX) LD = $(CXX)
INCLUDES = $(addprefix -I, $(INC_DIR)) INCLUDES = $(addprefix -I, $(INC_DIR))
CFLAGS += -O2 -MMD -Wall -ggdb3 $(INCLUDES) -fomit-frame-pointer -std=c++17 CFLAGS += -O3 -MMD -Wall -ggdb $(INCLUDES) -fomit-frame-pointer -std=c++17
CFLAGS += -DDIFF_TEST_QEMU # CFLAGS += -DDIFF_TEST_QEMU
# Source code generation before any targets. # Source code generation before any targets.
SUBDIRS = src/monitor/debug/expr_impl SUBDIRS = src/monitor/debug/expr_impl
......
#ifndef __COMMON_H__ #ifndef __COMMON_H__
#define __COMMON_H__ #define __COMMON_H__
#define DEBUG //#define DEBUG
//#define DIFF_TEST //#define DIFF_TEST
#if _SHARE #if _SHARE
......
...@@ -14,10 +14,8 @@ typedef struct { ...@@ -14,10 +14,8 @@ typedef struct {
#define EMPTY EX(inv) #define EMPTY EX(inv)
static inline void set_width(int width) { static inline void set_width(int width) {
if (width == 0) { const auto tmp = width == 0 ? (decoding.is_operand_size_16 ? 2 : 4) : width;
width = decoding.is_operand_size_16 ? 2 : 4; decoding.src.width = decoding.dest.width = decoding.src2.width = tmp;
}
decoding.src.width = decoding.dest.width = decoding.src2.width = width;
} }
/* Instruction Decode and EXecute */ /* Instruction Decode and EXecute */
...@@ -211,7 +209,7 @@ namespace EHelperImpl { ...@@ -211,7 +209,7 @@ namespace EHelperImpl {
idex(eip, &opcode_table[opcode]); idex(eip, &opcode_table[opcode]);
} }
make_EHelper(real) { __attribute__((hot)) make_EHelper(real) {
uint32_t opcode = instr_fetch(eip, 1); uint32_t opcode = instr_fetch(eip, 1);
decoding.opcode = opcode; decoding.opcode = opcode;
set_width(opcode_table[opcode].width); set_width(opcode_table[opcode].width);
......
...@@ -11,7 +11,14 @@ uint8_t pmem[PMEM_SIZE]; ...@@ -11,7 +11,14 @@ uint8_t pmem[PMEM_SIZE];
/* Memory accessing interfaces */ /* Memory accessing interfaces */
uint32_t paddr_read(paddr_t addr, int len) { __attribute__((hot)) uint32_t paddr_read(paddr_t addr, int len) {
switch(len) {
case 4: return pmem_rw(addr, uint32_t);
case 2: return pmem_rw(addr, uint32_t) & 0x0000ffff;
case 1: return pmem_rw(addr, uint32_t) & 0x000000ff;
case 3: return pmem_rw(addr, uint32_t) & 0x00ffffff;
case 0: return 0;
}
return pmem_rw(addr, uint32_t) & (~0u >> ((4 - len) << 3)); return pmem_rw(addr, uint32_t) & (~0u >> ((4 - len) << 3));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment