READ1,8,16,32,64->READN

0.96
Török Edvin 15 years ago
parent 49e5f6580e
commit df5c921d3a
  1. 29
      libclamav/bytecode_vm.c

@ -256,24 +256,19 @@ static always_inline struct stack_entry *pop_stack(struct stack *stack,
TRACE_W(x, p, PSIZE*8);\
*(void**)&values[p] = x
#define READ1(x, p) CHECK_GT(func->numBytes, p);\
x = (*(uint8_t*)&values[p])&1;\
TRACE_R(x)
#define READ8(x, p) CHECK_GT(func->numBytes, p);\
x = *(uint8_t*)&values[p];\
TRACE_R(x)
#define READ16(x, p) CHECK_GT(func->numBytes, p+1);\
CHECK_EQ((p)&1, 0);\
x = *(uint16_t*)&values[p];\
TRACE_R(x)
#define READ32(x, p) CHECK_GT(func->numBytes, p+3);\
CHECK_EQ((p)&3, 0);\
x = *(uint32_t*)&values[p];\
TRACE_R(x)
#define READ64(x, p) CHECK_GT(func->numBytes, p+7);\
CHECK_EQ((p)&7, 0);\
x = *(uint64_t*)&values[p];\
#define uint_type(n) uint##n##_t
#define READN(x, n, p)\
CHECK_GT(func->numBytes, p+(n/8)-1);\
x = *(uint_type(n)*)&values[p];\
TRACE_R(x)
#define READ1(x, p) READN(x, 8, p);\
x = x&1
#define READ8(x, p) READN(x, 8, p)
#define READ16(x, p) READN(x, 16, p)
#define READ32(x, p) READN(x, 32, p)
#define READ64(x, p) READN(x, 64, p)
#define PSIZE sizeof(void*)
#define READP(x, p) CHECK_GT(func->numBytes, p+PSIZE-1);\
CHECK_EQ((p)&(PSIZE-1), 0);\

Loading…
Cancel
Save