Improvements to the ARM64 disassembler.

This contains three changes:
- Use register aliases in the disassembly.
- When loading from a literal pool, show what is being loaded.
- Disassemble using absolute addresses on ARM64.
  This ensures that addresses disassembled are coherent with instruction
  location addresses shown.

Examples of disassembled instructions before and after the changes:

Before:
  movz w17, #0x471f
  ldr d9, pc+736 (addr 0x72690d50)

After:
  movz wip1, #0x471f
  ldr d9, pc+736 (addr 0x72690d50) (-745.133)

Change-Id: I72fdc160fac26f74126921834f17a581c26fd5d8
diff --git a/disassembler/disassembler.h b/disassembler/disassembler.h
index 487f433..1d827ba 100644
--- a/disassembler/disassembler.h
+++ b/disassembler/disassembler.h
@@ -34,8 +34,14 @@
   // Base addess for calculating relative code offsets when absolute_addresses_ is false.
   const uint8_t* const base_address_;
 
-  DisassemblerOptions(bool absolute_addresses, const uint8_t* base_address)
-      : absolute_addresses_(absolute_addresses), base_address_(base_address) {}
+  // If set, the disassembler is allowed to look at load targets in literal
+  // pools.
+  const bool can_read_literals_;
+
+  DisassemblerOptions(bool absolute_addresses, const uint8_t* base_address,
+                      bool can_read_literals)
+      : absolute_addresses_(absolute_addresses), base_address_(base_address),
+        can_read_literals_(can_read_literals) {}
 
  private:
   DISALLOW_COPY_AND_ASSIGN(DisassemblerOptions);