33
34 // We have interfaces for the following instructions:
35 // - NativeInstruction
36 // - - NativeCall
37 // - - NativeMovConstReg
38 // - - NativeMovConstRegPatching
39 // - - NativeMovRegMem
40 // - - NativeMovRegMemPatching
41 // - - NativeJump
42 // - - NativeFarJump
43 // - - NativeIllegalOpCode
44 // - - NativeGeneralJump
45 // - - NativeReturn
46 // - - NativeReturnX (return with argument)
47 // - - NativePushConst
48 // - - NativeTstRegMem
49
50 // The base class for different kinds of native instruction abstractions.
51 // Provides the primitive operations to manipulate code relative to this.
52
53 class NativeInstruction VALUE_OBJ_CLASS_SPEC {
54 friend class Relocation;
55
56 public:
57 enum Intel_specific_constants {
58 nop_instruction_code = 0x90,
59 nop_instruction_size = 1
60 };
61
62 bool is_nop() { return ubyte_at(0) == nop_instruction_code; }
63 inline bool is_call();
64 inline bool is_call_reg();
65 inline bool is_illegal();
66 inline bool is_return();
67 inline bool is_jump();
68 inline bool is_jump_reg();
69 inline bool is_far_jump();
70 inline bool is_cond_jump();
71 inline bool is_safepoint_poll();
72 inline bool is_mov_literal64();
73
|
33
34 // We have interfaces for the following instructions:
35 // - NativeInstruction
36 // - - NativeCall
37 // - - NativeMovConstReg
38 // - - NativeMovConstRegPatching
39 // - - NativeMovRegMem
40 // - - NativeMovRegMemPatching
41 // - - NativeJump
42 // - - NativeFarJump
43 // - - NativeIllegalOpCode
44 // - - NativeGeneralJump
45 // - - NativeReturn
46 // - - NativeReturnX (return with argument)
47 // - - NativePushConst
48 // - - NativeTstRegMem
49
50 // The base class for different kinds of native instruction abstractions.
51 // Provides the primitive operations to manipulate code relative to this.
52
53 class NativeInstruction {
54 friend class Relocation;
55
56 public:
57 enum Intel_specific_constants {
58 nop_instruction_code = 0x90,
59 nop_instruction_size = 1
60 };
61
62 bool is_nop() { return ubyte_at(0) == nop_instruction_code; }
63 inline bool is_call();
64 inline bool is_call_reg();
65 inline bool is_illegal();
66 inline bool is_return();
67 inline bool is_jump();
68 inline bool is_jump_reg();
69 inline bool is_far_jump();
70 inline bool is_cond_jump();
71 inline bool is_safepoint_poll();
72 inline bool is_mov_literal64();
73
|