| Index: syzygy/assm/assembler_base_impl.h
|
| diff --git a/syzygy/assm/assembler_base_impl.h b/syzygy/assm/assembler_base_impl.h
|
| index 8fc1004c07a3f4b28ebba743ed063acbf16e910e..3530ff63e9a2688e59cfd3c3c65daab1ae8c2a30 100644
|
| --- a/syzygy/assm/assembler_base_impl.h
|
| +++ b/syzygy/assm/assembler_base_impl.h
|
| @@ -905,6 +905,22 @@ void AssemblerBase<ReferenceType>::mov_fs(const Register32& dst,
|
| }
|
|
|
| template <class ReferenceType>
|
| +void AssemblerBase<ReferenceType>::mov_fs(const Register32& dst,
|
| + const Immediate& src) {
|
| + InstructionBuffer instr(this);
|
| + instr.EmitOpCodeByte(kFsSegmentPrefix);
|
| +
|
| + if (dst.id() == kRegisterEax) {
|
| + // Special encoding for indirect displacement only to EAX.
|
| + instr.EmitOpCodeByte(0xA1);
|
| + } else {
|
| + instr.EmitOpCodeByte(0x8B);
|
| + instr.EmitOpCodeByte(0x1D);
|
| + }
|
| + instr.Emit32BitImmediate(src);
|
| +}
|
| +
|
| +template <class ReferenceType>
|
| void AssemblerBase<ReferenceType>::mov_fs(const Operand& dst,
|
| const Register32& src) {
|
| InstructionBuffer instr(this);
|
| @@ -1164,6 +1180,13 @@ void AssemblerBase<ReferenceType>::add(const Operand& dst,
|
| }
|
|
|
| template <class ReferenceType>
|
| +void AssemblerBase<ReferenceType>::inc(const Operand& dst) {
|
| + InstructionBuffer instr(this);
|
| + instr.EmitOpCodeByte(0xFE);
|
| + instr.EmitOperand(0, dst);
|
| +}
|
| +
|
| +template <class ReferenceType>
|
| void AssemblerBase<ReferenceType>::sub(const Register8& dst,
|
| const Register8& src) {
|
| InstructionBuffer instr(this);
|
|
|