Response to question posted through email, not code review tool:


http://codereview.chromium.org/651029/diff/3020/4058
File src/arm/assembler-thumb2.cc (right):

http://codereview.chromium.org/651029/diff/3020/4058#newcode641
src/arm/assembler-thumb2.cc:641: i0 = b11110 * B11 | b1000 * B5;
On 2010/02/26 13:07:23, Erik Corry wrote:
Instead of bxxxx we should have meaningful names here.

You asked for suggestions, so here they are:

The table on page A6-6 turns into the following:

enum ThumbEncoding {
  kThumbRegularEncodingStart = 0x0,
  kThumbRegularEncodingEnd = 0xf,
  kThumbDataProcessingEncoding = 0x10,
  kThumbSpecialEncoding = 0x11,
  kThumbLoadLiteralEncodingStart = 0x12,
  kThumbLoadLiteralEncodingEnd = 0x13,
  kThumbLoadStoreSingleEncodingStart = 0x14,
  kThumbLoadStoreSingleEncodingEnd = 0x27,
  kThumbGeneratePCRelativeEncodingStart = 0x28,
  kThumbGeneratePCRelativeEncodingEnd = 0x29,
  kThumbGenerateSPRelativeEncodingStart = 0x2a,
  kThumbGenerateSPRelativeEncodingEnd = 0x2b,
  kThumbMiscEncodingStart = 0x2c,
  kThumbMiscEncodingEnd = 0x2f,
  kThumbStoreMultipleEncodingStart = 0x30,
  kThumbStoreMultipleEncodingEnd = 0x31,
  kThumbLoadMultipleEncodingStart = 0x32,
  kThumbLoadMultipleEncodingEnd = 0x33,
  kThumbConditionalBranchEncodingStart = 0x34,
  kThumbConditionalBranchEncodingEnd = 0x37,
  kThumbUnconditionalBranchEncodingStart = 0x38,
  kThumbUnconditionalBranchEncodingEnd = 0x39,
  kThumb32BitEncodingStart = 0x3a,
  kThumb32BitEncodingEnd = 0x3f
};

The table on page A6-14 yields:

enum Thumb32Encoding {
  kThumb32LoadStoreMultipleEncoding = 0x80,
  kThumb32LoadStoreDualEncoding = 0x84,
  kThumb32ShiftedRegisterEncoding = 0xa0,
  ...
  kThumb32ModifiedImmediateEncoding = 0x100,
  kThumb32PlainImmediateencoding = 0x140,
  ...
};

enum ThumbModifiedImmediateOpcode {
  kModifiedImmediateAnd = 0,
  kModifiedImmediateTest = 0,
  kModifiedImmediateBic = 1,
  kModifiedImmediateOr = 2,
  ...
  kModifiedImmediateAdd = 8,
  ...
};

So now the above becomes:

i0 = kThumb32BitEncodingStart * B10 |
     kThumb32ModifiedImmediateEncoding * B4 |
     kModifiedImmediateAdd * B5;

You might consider having the enum values be pre-shifted by the right
amount so you don't have to multiply by B4, B5, etc.
i0 =
};

http://codereview.chromium.org/651029

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to