about summary refs log tree commit diff stats
path: root/miasm2/jitter/op_semantics.h
diff options
context:
space:
mode:
authorAxel Souchet <0vercl0k@tuxfamily.org>2018-09-09 06:11:00 -0700
committerserpilliere <serpilliere@users.noreply.github.com>2018-09-09 15:11:00 +0200
commit8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9 (patch)
treedbf342089690704e89c10532b83d1d81709a49f4 /miasm2/jitter/op_semantics.h
parente61116884ac7879db08313542c6c28a8b00297c5 (diff)
downloadmiasm-8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9.tar.gz
miasm-8e6b39d80e9f8db8389bd2a8106d0f64b91c19e9.zip
Adds Windows support and AppVeyor CI (#835)
* Get miasm to work on Windows, also add AppVeyor CI

* Fix gcc jitter on Linux

* Make the dse_crackme tests work on Windows

* calling build and then install is less confusing than install twice

* fix os.rename race condition on Windows

* clean it up

* Clean up after the unused cl.exe's artifacts

* Use is_win instead of an additional check

* Fix issue on Windows where 'w' and 'wb' modes are different

* Address review feedback

* setuptools is actually not required, so reverting
Diffstat (limited to 'miasm2/jitter/op_semantics.h')
-rw-r--r--miasm2/jitter/op_semantics.h160
1 files changed, 87 insertions, 73 deletions
diff --git a/miasm2/jitter/op_semantics.h b/miasm2/jitter/op_semantics.h
index c56c41cf..f797e52b 100644
--- a/miasm2/jitter/op_semantics.h
+++ b/miasm2/jitter/op_semantics.h
@@ -1,30 +1,44 @@
 #ifndef OP_SEMANTICS_H
 #define OP_SEMANTICS_H
 
+#include <stdint.h>
+
+#if _WIN32
+#define _MIASM_EXPORT __declspec(dllexport)
+#define _MIASM_IMPORT __declspec(dllimport)
+#else
+#define _MIASM_EXPORT
+#define _MIASM_IMPORT
+#endif
+
 #define CC_P 1
-extern const uint8_t parity_table[256];
+#ifdef PARITY_IMPORT
+_MIASM_IMPORT extern const uint8_t parity_table[256];
+#else
+_MIASM_EXPORT extern const uint8_t parity_table[256];
+#endif
 #define parity(a) parity_table[(a) & 0xFF]
 
-unsigned int my_imul08(unsigned int a, unsigned int b);
-unsigned int mul_lo_op(unsigned int size, unsigned int a, unsigned int b);
-unsigned int mul_hi_op(unsigned int size, unsigned int a, unsigned int b);
-unsigned int imul_lo_op_08(char a, char b);
-unsigned int imul_lo_op_16(short a, short b);
-unsigned int imul_lo_op_32(int a, int b);
-int imul_hi_op_08(char a, char b);
-int imul_hi_op_16(short a, short b);
-int imul_hi_op_32(int a, int b);
+_MIASM_EXPORT unsigned int my_imul08(unsigned int a, unsigned int b);
+_MIASM_EXPORT unsigned int mul_lo_op(unsigned int size, unsigned int a, unsigned int b);
+_MIASM_EXPORT unsigned int mul_hi_op(unsigned int size, unsigned int a, unsigned int b);
+_MIASM_EXPORT unsigned int imul_lo_op_08(char a, char b);
+_MIASM_EXPORT unsigned int imul_lo_op_16(short a, short b);
+_MIASM_EXPORT unsigned int imul_lo_op_32(int a, int b);
+_MIASM_EXPORT int imul_hi_op_08(char a, char b);
+_MIASM_EXPORT int imul_hi_op_16(short a, short b);
+_MIASM_EXPORT int imul_hi_op_32(int a, int b);
 
 
-unsigned int umul16_lo(unsigned short a, unsigned short b);
-unsigned int umul16_hi(unsigned short a, unsigned short b);
+_MIASM_EXPORT unsigned int umul16_lo(unsigned short a, unsigned short b);
+_MIASM_EXPORT unsigned int umul16_hi(unsigned short a, unsigned short b);
 
 
-uint64_t rot_left(uint64_t size, uint64_t a, uint64_t b);
-uint64_t rot_right(uint64_t size, uint64_t a, uint64_t b);
+_MIASM_EXPORT uint64_t rot_left(uint64_t size, uint64_t a, uint64_t b);
+_MIASM_EXPORT uint64_t rot_right(uint64_t size, uint64_t a, uint64_t b);
 
-unsigned int cntleadzeros(uint64_t size, uint64_t src);
-unsigned int cnttrailzeros(uint64_t size, uint64_t src);
+_MIASM_EXPORT unsigned int cntleadzeros(uint64_t size, uint64_t src);
+_MIASM_EXPORT unsigned int cnttrailzeros(uint64_t size, uint64_t src);
 
 #define UDIV(sizeA)						\
 	uint ## sizeA ## _t udiv ## sizeA (uint ## sizeA ## _t a, uint ## sizeA ## _t b) \
@@ -77,63 +91,63 @@ unsigned int cnttrailzeros(uint64_t size, uint64_t src);
 		return r;						\
 	}
 
-uint64_t udiv64(uint64_t a, uint64_t b);
-uint64_t umod64(uint64_t a, uint64_t b);
-int64_t idiv64(int64_t a, int64_t b);
-int64_t imod64(int64_t a, int64_t b);
-
-uint32_t udiv32(uint32_t a, uint32_t b);
-uint32_t umod32(uint32_t a, uint32_t b);
-int32_t idiv32(int32_t a, int32_t b);
-int32_t imod32(int32_t a, int32_t b);
-
-uint16_t udiv16(uint16_t a, uint16_t b);
-uint16_t umod16(uint16_t a, uint16_t b);
-int16_t idiv16(int16_t a, int16_t b);
-int16_t imod16(int16_t a, int16_t b);
-
-uint8_t udiv8(uint8_t a, uint8_t b);
-uint8_t umod8(uint8_t a, uint8_t b);
-int8_t idiv8(int8_t a, int8_t b);
-int8_t imod8(int8_t a, int8_t b);
-
-unsigned int x86_cpuid(unsigned int a, unsigned int reg_num);
-
-uint32_t fpu_fadd32(uint32_t a, uint32_t b);
-uint64_t fpu_fadd64(uint64_t a, uint64_t b);
-uint32_t fpu_fsub32(uint32_t a, uint32_t b);
-uint64_t fpu_fsub64(uint64_t a, uint64_t b);
-uint32_t fpu_fmul32(uint32_t a, uint32_t b);
-uint64_t fpu_fmul64(uint64_t a, uint64_t b);
-uint32_t fpu_fdiv32(uint32_t a, uint32_t b);
-uint64_t fpu_fdiv64(uint64_t a, uint64_t b);
-double fpu_ftan(double a);
-double fpu_frndint(double a);
-double fpu_fsin(double a);
-double fpu_fcos(double a);
-double fpu_fscale(double a, double b);
-double fpu_f2xm1(double a);
-uint32_t fpu_fsqrt32(uint32_t a);
-uint64_t fpu_fsqrt64(uint64_t a);
-uint64_t fpu_fabs64(uint64_t a);
-uint64_t fpu_fprem64(uint64_t a, uint64_t b);
-double fpu_fchs(double a);
-double fpu_fyl2x(double a, double b);
-double fpu_fpatan(double a, double b);
-unsigned int fpu_fcom_c0(double a, double b);
-unsigned int fpu_fcom_c1(double a, double b);
-unsigned int fpu_fcom_c2(double a, double b);
-unsigned int fpu_fcom_c3(double a, double b);
-
-uint64_t sint_to_fp_64(int64_t a);
-uint32_t sint_to_fp_32(int32_t a);
-int32_t fp32_to_sint32(uint32_t a);
-int64_t fp64_to_sint64(uint64_t a);
-int32_t fp64_to_sint32(uint64_t a);
-uint32_t fp64_to_fp32(uint64_t a);
-uint64_t fp32_to_fp64(uint32_t a);
-uint32_t fpround_towardszero_fp32(uint32_t a);
-uint64_t fpround_towardszero_fp64(uint64_t a);
+_MIASM_EXPORT uint64_t udiv64(uint64_t a, uint64_t b);
+_MIASM_EXPORT uint64_t umod64(uint64_t a, uint64_t b);
+_MIASM_EXPORT int64_t idiv64(int64_t a, int64_t b);
+_MIASM_EXPORT int64_t imod64(int64_t a, int64_t b);
+
+_MIASM_EXPORT uint32_t udiv32(uint32_t a, uint32_t b);
+_MIASM_EXPORT uint32_t umod32(uint32_t a, uint32_t b);
+_MIASM_EXPORT int32_t idiv32(int32_t a, int32_t b);
+_MIASM_EXPORT int32_t imod32(int32_t a, int32_t b);
+
+_MIASM_EXPORT uint16_t udiv16(uint16_t a, uint16_t b);
+_MIASM_EXPORT uint16_t umod16(uint16_t a, uint16_t b);
+_MIASM_EXPORT int16_t idiv16(int16_t a, int16_t b);
+_MIASM_EXPORT int16_t imod16(int16_t a, int16_t b);
+
+_MIASM_EXPORT uint8_t udiv8(uint8_t a, uint8_t b);
+_MIASM_EXPORT uint8_t umod8(uint8_t a, uint8_t b);
+_MIASM_EXPORT int8_t idiv8(int8_t a, int8_t b);
+_MIASM_EXPORT int8_t imod8(int8_t a, int8_t b);
+
+_MIASM_EXPORT unsigned int x86_cpuid(unsigned int a, unsigned int reg_num);
+
+_MIASM_EXPORT uint32_t fpu_fadd32(uint32_t a, uint32_t b);
+_MIASM_EXPORT uint64_t fpu_fadd64(uint64_t a, uint64_t b);
+_MIASM_EXPORT uint32_t fpu_fsub32(uint32_t a, uint32_t b);
+_MIASM_EXPORT uint64_t fpu_fsub64(uint64_t a, uint64_t b);
+_MIASM_EXPORT uint32_t fpu_fmul32(uint32_t a, uint32_t b);
+_MIASM_EXPORT uint64_t fpu_fmul64(uint64_t a, uint64_t b);
+_MIASM_EXPORT uint32_t fpu_fdiv32(uint32_t a, uint32_t b);
+_MIASM_EXPORT uint64_t fpu_fdiv64(uint64_t a, uint64_t b);
+_MIASM_EXPORT double fpu_ftan(double a);
+_MIASM_EXPORT double fpu_frndint(double a);
+_MIASM_EXPORT double fpu_fsin(double a);
+_MIASM_EXPORT double fpu_fcos(double a);
+_MIASM_EXPORT double fpu_fscale(double a, double b);
+_MIASM_EXPORT double fpu_f2xm1(double a);
+_MIASM_EXPORT uint32_t fpu_fsqrt32(uint32_t a);
+_MIASM_EXPORT uint64_t fpu_fsqrt64(uint64_t a);
+_MIASM_EXPORT uint64_t fpu_fabs64(uint64_t a);
+_MIASM_EXPORT uint64_t fpu_fprem64(uint64_t a, uint64_t b);
+_MIASM_EXPORT double fpu_fchs(double a);
+_MIASM_EXPORT double fpu_fyl2x(double a, double b);
+_MIASM_EXPORT double fpu_fpatan(double a, double b);
+_MIASM_EXPORT unsigned int fpu_fcom_c0(double a, double b);
+_MIASM_EXPORT unsigned int fpu_fcom_c1(double a, double b);
+_MIASM_EXPORT unsigned int fpu_fcom_c2(double a, double b);
+_MIASM_EXPORT unsigned int fpu_fcom_c3(double a, double b);
+
+_MIASM_EXPORT uint64_t sint_to_fp_64(int64_t a);
+_MIASM_EXPORT uint32_t sint_to_fp_32(int32_t a);
+_MIASM_EXPORT int32_t fp32_to_sint32(uint32_t a);
+_MIASM_EXPORT int64_t fp64_to_sint64(uint64_t a);
+_MIASM_EXPORT int32_t fp64_to_sint32(uint64_t a);
+_MIASM_EXPORT uint32_t fp64_to_fp32(uint64_t a);
+_MIASM_EXPORT uint64_t fp32_to_fp64(uint32_t a);
+_MIASM_EXPORT uint32_t fpround_towardszero_fp32(uint32_t a);
+_MIASM_EXPORT uint64_t fpround_towardszero_fp64(uint64_t a);
 
 #define SHIFT_RIGHT_ARITH(size, value, shift)				\
 	((uint ## size ## _t)((((uint64_t) (shift)) > ((size) - 1))?	\