diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-12 14:21:06 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-12 14:21:06 +0100 |
commit | 1ef2348df0c15f9924d3b5be798fd20805ccd5aa (patch) | |
tree | 4289f7e1d42e55318c96ef44e7e6a499c1ea5a3c /py/asmx86.c | |
parent | 1606607bd42ce36f7d892c14b29046b7152d0fa6 (diff) | |
download | micropython-1ef2348df0c15f9924d3b5be798fd20805ccd5aa.tar.gz micropython-1ef2348df0c15f9924d3b5be798fd20805ccd5aa.zip |
py: Implement and,or,xor native ops for viper.
Diffstat (limited to 'py/asmx86.c')
-rw-r--r-- | py/asmx86.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/py/asmx86.c b/py/asmx86.c index 072998c673..30bd7933b0 100644 --- a/py/asmx86.c +++ b/py/asmx86.c @@ -53,6 +53,8 @@ #define OPCODE_MOV_R32_TO_RM32 (0x89) #define OPCODE_MOV_RM32_TO_R32 (0x8b) #define OPCODE_LEA_MEM_TO_R32 (0x8d) /* /r */ +#define OPCODE_AND_R32_TO_RM32 (0x21) /* /r */ +#define OPCODE_OR_R32_TO_RM32 (0x09) /* /r */ #define OPCODE_XOR_R32_TO_RM32 (0x31) /* /r */ #define OPCODE_ADD_R32_TO_RM32 (0x01) #define OPCODE_ADD_I32_TO_RM32 (0x81) /* /0 */ @@ -287,6 +289,14 @@ void asm_x86_mov_i32_to_r32_aligned(asm_x86_t *as, int32_t src_i32, int dest_r32 asm_x86_mov_i32_to_r32(as, src_i32, dest_r32); } +void asm_x86_and_r32_r32(asm_x86_t *as, int dest_r32, int src_r32) { + asm_x86_generic_r32_r32(as, dest_r32, src_r32, OPCODE_AND_R32_TO_RM32); +} + +void asm_x86_or_r32_r32(asm_x86_t *as, int dest_r32, int src_r32) { + asm_x86_generic_r32_r32(as, dest_r32, src_r32, OPCODE_OR_R32_TO_RM32); +} + void asm_x86_xor_r32_r32(asm_x86_t *as, int dest_r32, int src_r32) { asm_x86_generic_r32_r32(as, dest_r32, src_r32, OPCODE_XOR_R32_TO_RM32); } |