@@ -775,13 +775,6 @@ class X86Assembler {
775775 EMIT (" ret" );
776776 }
777777
778- void asm_xor_r32_r32 (X86Reg r32, X86Reg s32) {
779- m_code.push_back (m_al, 0x31 );
780- modrm_sib_disp (m_code, m_al,
781- s32, &r32, nullptr , 1 , 0 , false );
782- EMIT (" xor " + r2s (r32) + " , " + r2s (s32));
783- }
784-
785778 void asm_mov_r32_imm32 (X86Reg r32, uint32_t imm32) {
786779 m_code.push_back (m_al, 0xb8 + r32);
787780 push_back_uint32 (m_code, m_al, imm32);
@@ -1212,6 +1205,49 @@ class X86Assembler {
12121205 EMIT (" and " + r2s (r32) + " , " + i2s (imm32));
12131206 }
12141207
1208+ void asm_and_r64_r64 (X64Reg r64, X64Reg s64) {
1209+ X86Reg r32 = X86Reg (r64 & 7 ), s32 = X86Reg (s64 & 7 );
1210+ m_code.push_back (m_al, rex (1 , r64 >> 3 , 0 , s64 >> 3 ));
1211+ m_code.push_back (m_al, 0x23 );
1212+ modrm_sib_disp (m_code, m_al, r32, &s32, nullptr , 1 , 0 , false );
1213+ EMIT (" and " + r2s (r64) + " , " + r2s (s64));
1214+ }
1215+
1216+ void asm_and_r32_r32 (X86Reg r32, X86Reg s32) {
1217+ m_code.push_back (m_al, 0x23 );
1218+ modrm_sib_disp (m_code, m_al, r32, &s32, nullptr , 1 , 0 , false );
1219+ EMIT (" and " + r2s (r32) + " , " + r2s (r32));
1220+ }
1221+
1222+ void asm_or_r64_r64 (X64Reg r64, X64Reg s64) {
1223+ X86Reg r32 = X86Reg (r64 & 7 ), s32 = X86Reg (s64 & 7 );
1224+ m_code.push_back (m_al, rex (1 , r64 >> 3 , 0 , s64 >> 3 ));
1225+ m_code.push_back (m_al, 0x0B );
1226+ modrm_sib_disp (m_code, m_al, r32, &s32, nullptr , 1 , 0 , false );
1227+ EMIT (" or " + r2s (r64) + " , " + r2s (s64));
1228+ }
1229+
1230+ void asm_or_r32_r32 (X86Reg r32, X86Reg s32) {
1231+ m_code.push_back (m_al, 0x0B );
1232+ modrm_sib_disp (m_code, m_al, r32, &s32, nullptr , 1 , 0 , false );
1233+ EMIT (" or " + r2s (r32) + " , " + r2s (r32));
1234+ }
1235+
1236+ void asm_xor_r64_r64 (X64Reg r64, X64Reg s64) {
1237+ X86Reg r32 = X86Reg (r64 & 7 ), s32 = X86Reg (s64 & 7 );
1238+ m_code.push_back (m_al, rex (1 , r64 >> 3 , 0 , s64 >> 3 ));
1239+ m_code.push_back (m_al, 0x33 );
1240+ modrm_sib_disp (m_code, m_al, r32, &s32, nullptr , 1 , 0 , false );
1241+ EMIT (" xor " + r2s (r64) + " , " + r2s (s64));
1242+ }
1243+
1244+ void asm_xor_r32_r32 (X86Reg r32, X86Reg s32) {
1245+ m_code.push_back (m_al, 0x31 );
1246+ modrm_sib_disp (m_code, m_al,
1247+ s32, &r32, nullptr , 1 , 0 , false );
1248+ EMIT (" xor " + r2s (r32) + " , " + r2s (s32));
1249+ }
1250+
12151251 void asm_syscall () {
12161252 m_code.push_back (m_al, 0x0F );
12171253 m_code.push_back (m_al, 0x05 );
0 commit comments