#include <assembler_arm.h>
|
| Operand () |
|
| Operand (const Operand &other) |
|
Operand & | operator= (const Operand &other) |
|
| Operand (uint32_t immediate) |
|
| Operand (uint32_t rotate, uint32_t immed8) |
|
| Operand (Register rm) |
|
| Operand (Register rm, Shift shift, uint32_t shift_imm) |
|
| Operand (Register rm, Shift shift, Register rs) |
|
| Operand () |
|
| Operand (const Operand &other) |
|
Operand & | operator= (const Operand &other) |
|
| Operand (Register rm) |
|
| Operand (Register rm, Shift shift, int32_t imm) |
|
| Operand (Register rm, Shift shift, Register r) |
|
| Operand (Register rm, Extend extend, int32_t imm) |
|
| Operand (Register rm, Extend extend, Register r) |
|
| Operand (int32_t imm) |
|
| Operand (uint8_t n, int8_t imm_s, int8_t imm_r) |
|
uint8_t | mod () const |
|
Register | rm () const |
|
ScaleFactor | scale () const |
|
Register | index () const |
|
Register | base () const |
|
int8_t | disp8 () const |
|
int32_t | disp32 () const |
|
| Operand (const Operand &other) |
|
Operand & | operator= (const Operand &other) |
|
bool | Equals (const Operand &other) const |
|
uint8_t | rex () const |
|
uint8_t | mod () const |
|
Register | rm () const |
|
ScaleFactor | scale () const |
|
Register | index () const |
|
Register | base () const |
|
int8_t | disp8 () const |
|
int32_t | disp32 () const |
|
| Operand (const Operand &other) |
|
Operand & | operator= (const Operand &other) |
|
bool | Equals (const Operand &other) const |
|
| ValueObject () |
|
| ~ValueObject () |
|
Definition at line 129 of file assembler_arm.h.
◆ OperandType
Enumerator |
---|
Shifted | |
Extended | |
Immediate | |
BitfieldImm | |
Unknown | |
Definition at line 349 of file assembler_arm64.h.
◆ Operand() [1/20]
dart::compiler::Operand::Operand |
( |
| ) |
|
|
inline |
◆ Operand() [2/20]
dart::compiler::Operand::Operand |
( |
const Operand & |
other | ) |
|
|
inline |
◆ Operand() [3/20]
dart::compiler::Operand::Operand |
( |
uint32_t |
immediate | ) |
|
|
inlineexplicit |
Definition at line 146 of file assembler_arm.h.
146 {
148 type_ = 1;
149 encoding_ = immediate;
150 }
◆ Operand() [4/20]
dart::compiler::Operand::Operand |
( |
uint32_t |
rotate, |
|
|
uint32_t |
immed8 |
|
) |
| |
|
inline |
Definition at line 153 of file assembler_arm.h.
153 {
155 type_ = 1;
157 }
static bool rotate(const SkDCubic &cubic, int zero, int index, SkDCubic &rotPath)
◆ Operand() [5/20]
dart::compiler::Operand::Operand |
( |
Register |
rm | ) |
|
|
inlineexplicit |
Definition at line 160 of file assembler_arm.h.
160 {
161 type_ = 0;
162 encoding_ =
static_cast<uint32_t
>(
rm);
163 }
◆ Operand() [6/20]
dart::compiler::Operand::Operand |
( |
Register |
rm, |
|
|
Shift |
shift, |
|
|
uint32_t |
shift_imm |
|
) |
| |
|
inline |
Definition at line 166 of file assembler_arm.h.
166 {
168 type_ = 0;
171 static_cast<uint32_t
>(
rm);
172 }
◆ Operand() [7/20]
Definition at line 175 of file assembler_arm.h.
175 {
176 type_ = 0;
178 static_cast<uint32_t
>(shift) <<
kShiftShift | (1 << 4) |
179 static_cast<uint32_t
>(
rm);
180 }
◆ Operand() [8/20]
dart::compiler::Operand::Operand |
( |
| ) |
|
|
inline |
◆ Operand() [9/20]
dart::compiler::Operand::Operand |
( |
const Operand & |
other | ) |
|
|
inline |
◆ Operand() [10/20]
dart::compiler::Operand::Operand |
( |
Register |
rm | ) |
|
|
inlineexplicit |
◆ Operand() [11/20]
dart::compiler::Operand::Operand |
( |
Register |
rm, |
|
|
Shift |
shift, |
|
|
int32_t |
imm |
|
) |
| |
|
inline |
Definition at line 376 of file assembler_arm64.h.
376 {
382 }
static bool IsUint(intptr_t N, T value)
◆ Operand() [12/20]
◆ Operand() [13/20]
dart::compiler::Operand::Operand |
( |
Register |
rm, |
|
|
Extend |
extend, |
|
|
int32_t |
imm |
|
) |
| |
|
inline |
◆ Operand() [14/20]
◆ Operand() [15/20]
dart::compiler::Operand::Operand |
( |
int32_t |
imm | ) |
|
|
inlineexplicit |
◆ Operand() [16/20]
dart::compiler::Operand::Operand |
( |
uint8_t |
n, |
|
|
int8_t |
imm_s, |
|
|
int8_t |
imm_r |
|
) |
| |
|
inline |
◆ Operand() [17/20]
dart::compiler::Operand::Operand |
( |
const Operand & |
other | ) |
|
|
inline |
Definition at line 75 of file assembler_ia32.h.
76 memmove(&encoding_[0], &other.encoding_[0], other.length_);
77 }
◆ Operand() [18/20]
dart::compiler::Operand::Operand |
( |
| ) |
|
|
inlineprotected |
◆ Operand() [19/20]
dart::compiler::Operand::Operand |
( |
const Operand & |
other | ) |
|
|
inline |
Definition at line 92 of file assembler_x64.h.
93 :
ValueObject(), length_(other.length_), rex_(other.rex_) {
94 memmove(&encoding_[0], &other.encoding_[0], other.length_);
95 }
◆ Operand() [20/20]
dart::compiler::Operand::Operand |
( |
| ) |
|
|
inlineprotected |
◆ base() [1/2]
Register dart::compiler::Operand::base |
( |
| ) |
const |
|
inline |
◆ base() [2/2]
Register dart::compiler::Operand::base |
( |
| ) |
const |
|
inline |
Definition at line 77 of file assembler_x64.h.
77 {
78 int base_rex = (rex_ &
REX_B) << 3;
79 return static_cast<Register>(base_rex + (encoding_at(1) & 7));
80 }
◆ CanHold() [1/2]
static OperandType dart::compiler::Operand::CanHold |
( |
int64_t |
imm, |
|
|
uint8_t |
sz, |
|
|
Operand * |
op |
|
) |
| |
|
inlinestatic |
Definition at line 438 of file assembler_arm64.h.
438 {
444 }
else if (((imm & 0xfff) == 0) && (
Utils::IsUint(12, imm >> 12))) {
449 } else {
450 op->encoding_ = 0;
452 }
453 return op->type_;
454 }
static bool IsImmLogical(uint64_t value, uint8_t width, Operand *imm_op)
const int kXRegSizeInBits
const int kWRegSizeInBits
◆ CanHold() [2/2]
static bool dart::compiler::Operand::CanHold |
( |
uint32_t |
immediate, |
|
|
Operand * |
o |
|
) |
| |
|
inlinestatic |
Definition at line 182 of file assembler_arm.h.
182 {
183
185 o->type_ = 1;
187 return true;
188 }
189
190 for (int rot = 0; rot < 16; rot++) {
193 o->type_ = 1;
195 return true;
196 }
197 }
198 return false;
199 }
static T RotateLeft(T value, uint8_t rotate)
◆ disp32() [1/2]
int32_t dart::compiler::Operand::disp32 |
( |
| ) |
const |
|
inline |
Definition at line 70 of file assembler_ia32.h.
70 {
72 return bit_copy<int32_t>(encoding_[length_ - 4]);
73 }
◆ disp32() [2/2]
int32_t dart::compiler::Operand::disp32 |
( |
| ) |
const |
|
inline |
Definition at line 87 of file assembler_x64.h.
87 {
89 return bit_copy<int32_t>(encoding_[length_ - 4]);
90 }
◆ disp8() [1/2]
int8_t dart::compiler::Operand::disp8 |
( |
| ) |
const |
|
inline |
Definition at line 65 of file assembler_ia32.h.
65 {
67 return static_cast<int8_t>(encoding_[length_ - 1]);
68 }
◆ disp8() [2/2]
int8_t dart::compiler::Operand::disp8 |
( |
| ) |
const |
|
inline |
Definition at line 82 of file assembler_x64.h.
82 {
84 return static_cast<int8_t>(encoding_[length_ - 1]);
85 }
◆ Equals() [1/2]
bool dart::compiler::Operand::Equals |
( |
const Operand & |
other | ) |
const |
|
inline |
Definition at line 85 of file assembler_ia32.h.
85 {
86 if (length_ != other.length_) return false;
87 for (uint8_t
i = 0;
i < length_;
i++) {
88 if (encoding_[
i] != other.encoding_[
i])
return false;
89 }
90 return true;
91 }
◆ Equals() [2/2]
bool dart::compiler::Operand::Equals |
( |
const Operand & |
other | ) |
const |
|
inline |
Definition at line 104 of file assembler_x64.h.
104 {
105 if (length_ != other.length_) return false;
106 if (rex_ != other.rex_) return false;
107 for (uint8_t
i = 0;
i < length_;
i++) {
108 if (encoding_[
i] != other.encoding_[
i])
return false;
109 }
110 return true;
111 }
◆ index() [1/2]
Register dart::compiler::Operand::index |
( |
| ) |
const |
|
inline |
◆ index() [2/2]
Register dart::compiler::Operand::index |
( |
| ) |
const |
|
inline |
Definition at line 72 of file assembler_x64.h.
72 {
73 int index_rex = (rex_ &
REX_X) << 2;
74 return static_cast<Register>(index_rex + ((encoding_at(1) >> 3) & 7));
75 }
◆ IsImmLogical()
static bool dart::compiler::Operand::IsImmLogical |
( |
uint64_t |
value, |
|
|
uint8_t |
width, |
|
|
Operand * |
imm_op |
|
) |
| |
|
static |
◆ mod() [1/2]
uint8_t dart::compiler::Operand::mod |
( |
| ) |
const |
|
inline |
◆ mod() [2/2]
uint8_t dart::compiler::Operand::mod |
( |
| ) |
const |
|
inline |
Definition at line 61 of file assembler_x64.h.
61{ return (encoding_at(0) >> 6) & 3; }
◆ operator=() [1/4]
Definition at line 139 of file assembler_arm.h.
139 {
140 type_ = other.type_;
141 encoding_ = other.encoding_;
142 return *this;
143 }
◆ operator=() [2/4]
Definition at line 364 of file assembler_arm64.h.
364 {
365 type_ = other.type_;
366 encoding_ = other.encoding_;
367 return *this;
368 }
◆ operator=() [3/4]
Definition at line 79 of file assembler_ia32.h.
79 {
80 length_ = other.length_;
81 memmove(&encoding_[0], &other.encoding_[0], other.length_);
82 return *this;
83 }
◆ operator=() [4/4]
Definition at line 97 of file assembler_x64.h.
97 {
98 length_ = other.length_;
99 rex_ = other.rex_;
100 memmove(&encoding_[0], &other.encoding_[0], other.length_);
101 return *this;
102 }
◆ rex()
uint8_t dart::compiler::Operand::rex |
( |
| ) |
const |
|
inline |
◆ rm() [1/2]
Register dart::compiler::Operand::rm |
( |
| ) |
const |
|
inline |
◆ rm() [2/2]
Register dart::compiler::Operand::rm |
( |
| ) |
const |
|
inline |
Definition at line 63 of file assembler_x64.h.
63 {
64 int rm_rex = (rex_ &
REX_B) << 3;
65 return static_cast<Register>(rm_rex + (encoding_at(0) & 7));
66 }
◆ scale() [1/2]
◆ scale() [2/2]
◆ SetDisp32() [1/2]
void dart::compiler::Operand::SetDisp32 |
( |
int32_t |
disp | ) |
|
|
inlineprotected |
Definition at line 114 of file assembler_ia32.h.
114 {
115 ASSERT(length_ == 1 || length_ == 2);
116 intptr_t disp_size = sizeof(disp);
117 memmove(&encoding_[length_], &disp, disp_size);
118 length_ += disp_size;
119 }
◆ SetDisp32() [2/2]
void dart::compiler::Operand::SetDisp32 |
( |
int32_t |
disp | ) |
|
|
inlineprotected |
Definition at line 142 of file assembler_x64.h.
142 {
143 ASSERT(length_ == 1 || length_ == 2);
144 memmove(&encoding_[length_], &disp, sizeof(disp));
145 length_ += sizeof(disp);
146 }
◆ SetDisp8() [1/2]
void dart::compiler::Operand::SetDisp8 |
( |
int8_t |
disp | ) |
|
|
inlineprotected |
Definition at line 109 of file assembler_ia32.h.
109 {
110 ASSERT(length_ == 1 || length_ == 2);
111 encoding_[length_++] = static_cast<uint8_t>(disp);
112 }
◆ SetDisp8() [2/2]
void dart::compiler::Operand::SetDisp8 |
( |
int8_t |
disp | ) |
|
|
inlineprotected |
Definition at line 137 of file assembler_x64.h.
137 {
138 ASSERT(length_ == 1 || length_ == 2);
139 encoding_[length_++] = static_cast<uint8_t>(disp);
140 }
◆ SetModRM() [1/2]
void dart::compiler::Operand::SetModRM |
( |
int |
mod, |
|
|
Register |
rm |
|
) |
| |
|
inlineprotected |
◆ SetModRM() [2/2]
void dart::compiler::Operand::SetModRM |
( |
int |
mod, |
|
|
Register |
rm |
|
) |
| |
|
inlineprotected |
Definition at line 116 of file assembler_x64.h.
116 {
118 if ((
rm > 7) && !((
rm ==
R12) && (
mod != 3))) {
120 }
121 encoding_[0] = (
mod << 6) | (
rm & 7);
122 length_ = 1;
123 }
◆ SetSIB() [1/2]
Definition at line 102 of file assembler_ia32.h.
102 {
106 length_ = 2;
107 }
ScaleFactor scale() const
◆ SetSIB() [2/2]
◆ Address
◆ Assembler
The documentation for this class was generated from the following files: