/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│ │vi: set et ft=asm ts=8 sw=8 fenc=utf-8 :vi│ ╞══════════════════════════════════════════════════════════════════════════════╡ │ Copyright 2018 Intel Corporation │ │ Copyright 2020 Justine Alexandra Roberts Tunney │ │ │ │ Licensed under the Apache License, Version 2.0 (the "License"); │ │ you may not use this file except in compliance with the License. │ │ You may obtain a copy of the License at │ │ │ │ http://www.apache.org/licenses/LICENSE-2.0 │ │ │ │ Unless required by applicable law or agreed to in writing, software │ │ distributed under the License is distributed on an "AS IS" BASIS, │ │ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. │ │ See the License for the specific language governing permissions and │ │ limitations under the License. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/macros.h" / Phash tables for instruction length decoding. / @see build/rle.py for more context here .initbss 300,_init_x86tab xed_prefix_table_bit: .zero 32 .endobj xed_prefix_table_bit,globl,hidden xed_has_modrm_2d: .zero 512 .endobj xed_has_modrm_2d,globl,hidden xed_has_disp_regular: .zero 96 .endobj xed_has_disp_regular,globl,hidden xed_has_sib_table: .zero 96 .endobj xed_has_sib_table,globl,hidden xed_disp_bits_2d: .zero 512 .endobj xed_disp_bits_2d,globl,hidden xed_imm_bits_2d: .zero 512 .endobj xed_imm_bits_2d,globl,hidden .previous .initro 300,_init_x86tab # 536 bytes (30%) xed_prefix_table_bit.rodata: .byte 4,0x00 # 00─03 ∅─♥ .byte 4,0x40 # 04─07 ♦─• .byte 2,0xff # 08─09 ◘─○ .byte 2,0x00 # 0a─0b ◙─♂ .byte 1,0xf0 # 0c─0c ♀ .byte 17,0x00 # 0d─1d ♪─↔ .byte 1,0x0d # 1e─1e ▲ .byte 1,0x00 # 1f─1f ▼ .endobj xed_prefix_table_bit.rodata xed_has_modrm_2d.rodata: .byte 4,0x01 # 00─03 ∅─♥ .byte 4,0x00 # 04─07 ♦─• .byte 4,0x01 # 08─0b ◘─♂ .byte 3,0x00 # 0c─0e ♀─♫ .byte 1,0x03 # 0f─0f ☼ .byte 4,0x01 # 10─13 ►─‼ .byte 4,0x00 # 14─17 ¶─↨ .byte 4,0x01 # 18─1b ↑─← .byte 4,0x00 # 1c─1f ∟─▼ .byte 4,0x01 # 20─23 ─# .byte 2,0x00 # 24─25 $─% .byte 1,0x03 # 26─26 & .byte 1,0x00 # 27─27 ' .byte 4,0x01 # 28─2b (─+ .byte 2,0x00 # 2c─2d ,── .byte 1,0x03 # 2e─2e . .byte 1,0x00 # 2f─2f / .byte 4,0x01 # 30─33 0─3 .byte 2,0x00 # 34─35 4─5 .byte 1,0x03 # 36─36 6 .byte 1,0x00 # 37─37 7 .byte 4,0x01 # 38─3b 8─; .byte 2,0x00 # 3c─3d <─= .byte 1,0x03 # 3e─3e > .byte 35,0x00 # 3f─61 ?─a .byte 2,0x01 # 62─63 b─c .byte 4,0x03 # 64─67 d─g .byte 1,0x00 # 68─68 h .byte 1,0x01 # 69─69 i .byte 1,0x00 # 6a─6a j .byte 1,0x01 # 6b─6b k .byte 20,0x00 # 6c─7f l─⌂ .byte 16,0x01 # 80─8f Ç─Å .byte 48,0x00 # 90─bf É─┐ .byte 2,0x01 # c0─c1 └─┴ .byte 2,0x00 # c2─c3 ┬─├ .byte 4,0x01 # c4─c7 ──╟ .byte 8,0x00 # c8─cf ╚─╧ .byte 4,0x01 # d0─d3 ╨─╙ .byte 4,0x00 # d4─d7 ╘─╫ .byte 8,0x01 # d8─df ╪─▀ .byte 16,0x00 # e0─ef α─∩ .byte 1,0x03 # f0─f0 ≡ .byte 1,0x00 # f1─f1 ± .byte 2,0x03 # f2─f3 ≥─≤ .byte 2,0x00 # f4─f5 ⌠─⌡ .byte 2,0x01 # f6─f7 ÷─≈ .byte 6,0x00 # f8─fd °─² .byte 6,0x01 # fe─103 .byte 1,0x03 # 104─104 .byte 5,0x00 # 105─109 .byte 1,0x03 # 10a─10a .byte 1,0x00 # 10b─10b .byte 1,0x03 # 10c─10c .byte 1,0x01 # 10d─10d .byte 1,0x00 # 10e─10e .byte 1,0x03 # 10f─10f .byte 16,0x01 # 110─11f .byte 4,0x02 # 120─123 .byte 4,0x03 # 124─127 .byte 8,0x01 # 128─12f .byte 6,0x00 # 130─135 .byte 1,0x03 # 136─136 .byte 1,0x00 # 137─137 .byte 8,0x03 # 138─13f .byte 55,0x01 # 140─176 .byte 1,0x00 # 177─177 .byte 8,0x01 # 178─17f .byte 16,0x00 # 180─18f .byte 16,0x01 # 190─19f .byte 3,0x00 # 1a0─1a2 .byte 3,0x01 # 1a3─1a5 .byte 2,0x03 # 1a6─1a7 .byte 3,0x00 # 1a8─1aa .byte 29,0x01 # 1ab─1c7 .byte 8,0x00 # 1c8─1cf .byte 48,0x01 # 1d0─1ff .endobj xed_has_modrm_2d.rodata xed_has_disp_regular.rodata: .byte 6,0x00 # 00─05 ∅─♣ .byte 1,0x02 # 06─06 ♠ .byte 1,0x00 # 07─07 • .byte 8,0x01 # 08─0f ◘─☼ .byte 8,0x02 # 10─17 ►─↨ .byte 13,0x00 # 18─24 ↑─$ .byte 1,0x04 # 25─25 % .byte 2,0x00 # 26─27 &─' .byte 8,0x01 # 28─2f (─/ .byte 8,0x04 # 30─37 0─7 .byte 13,0x00 # 38─44 8─D .byte 1,0x04 # 45─45 E .byte 2,0x00 # 46─47 F─G .byte 8,0x01 # 48─4f H─O .byte 8,0x04 # 50─57 P─W .byte 8,0x00 # 58─5f X─_ .endobj xed_has_disp_regular.rodata xed_has_sib_table.rodata: .byte 36,FALSE # 00─23 ∅─# .byte 1,TRUE # 24─24 $ .byte 7,FALSE # 25─2b %─+ .byte 1,TRUE # 2c─2c , .byte 7,FALSE # 2d─33 ──3 .byte 1,TRUE # 34─34 4 .byte 15,FALSE # 35─43 5─C .byte 1,TRUE # 44─44 D .byte 7,FALSE # 45─4b E─K .byte 1,TRUE # 4c─4c L .byte 7,FALSE # 4d─53 M─S .byte 1,TRUE # 54─54 T .byte 11,FALSE # 55─5f U─_ .endobj xed_has_sib_table.rodata xed_disp_bits_2d.rodata: .byte 15,0x04 # 00─0e ∅─♫ .byte 1,0x00 # 0f─0f ☼ .byte 22,0x04 # 10─25 ►─% .byte 1,0x00 # 26─26 & .byte 7,0x04 # 27─2d '── .byte 1,0x00 # 2e─2e . .byte 7,0x04 # 2f─35 /─5 .byte 1,0x00 # 36─36 6 .byte 7,0x04 # 37─3d 7─= .byte 1,0x00 # 3e─3e > .byte 37,0x04 # 3f─63 ?─c .byte 4,0x00 # 64─67 d─g .byte 8,0x04 # 68─6f h─o .byte 16,0x01 # 70─7f p─⌂ .byte 26,0x04 # 80─99 Ç─Ö .byte 1,0x02 # 9a─9a Ü .byte 5,0x04 # 9b─9f ¢─ƒ .byte 4,0x05 # a0─a3 á─ú .byte 35,0x04 # a4─c6 ñ─╞ .byte 1,0x06 # c7─c7 ╟ .byte 24,0x04 # c8─df ╚─▀ .byte 4,0x01 # e0─e3 α─π .byte 4,0x04 # e4─e7 Σ─τ .byte 2,0x03 # e8─e9 Φ─Θ .byte 1,0x02 # ea─ea Ω .byte 1,0x01 # eb─eb δ .byte 4,0x04 # ec─ef ∞─∩ .byte 1,0x00 # f0─f0 ≡ .byte 1,0x04 # f1─f1 ± .byte 2,0x00 # f2─f3 ≥─≤ .byte 16,0x04 # f4─103 .byte 1,0x00 # 104─104 .byte 5,0x04 # 105─109 .byte 1,0x00 # 10a─10a .byte 1,0x04 # 10b─10b .byte 1,0x00 # 10c─10c .byte 2,0x04 # 10d─10e .byte 1,0x00 # 10f─10f .byte 20,0x04 # 110─123 .byte 4,0x00 # 124─127 .byte 14,0x04 # 128─135 .byte 1,0x00 # 136─136 .byte 1,0x04 # 137─137 .byte 8,0x00 # 138─13f .byte 64,0x04 # 140─17f .byte 16,0x03 # 180─18f .byte 22,0x04 # 190─1a5 .byte 2,0x00 # 1a6─1a7 .byte 88,0x04 # 1a8─1ff .endobj xed_disp_bits_2d.rodata xed_imm_bits_2d.rodata: .byte 4,0x01 # 00─03 ∅─♥ .byte 1,0x05 # 04─04 ♦ .byte 1,0x07 # 05─05 ♣ .byte 6,0x01 # 06─0b ♠─♂ .byte 1,0x09 # 0c─0c ♀ .byte 1,0x07 # 0d─0d ♪ .byte 1,0x01 # 0e─0e ♫ .byte 1,0x00 # 0f─0f ☼ .byte 4,0x01 # 10─13 ►─‼ .byte 1,0x05 # 14─14 ¶ .byte 1,0x07 # 15─15 § .byte 6,0x01 # 16─1b ▬─← .byte 1,0x05 # 1c─1c ∟ .byte 1,0x07 # 1d─1d ↔ .byte 6,0x01 # 1e─23 ▲─# .byte 1,0x05 # 24─24 $ .byte 1,0x07 # 25─25 % .byte 1,0x00 # 26─26 & .byte 5,0x01 # 27─2b '─+ .byte 1,0x05 # 2c─2c , .byte 1,0x07 # 2d─2d ─ .byte 1,0x00 # 2e─2e . .byte 5,0x01 # 2f─33 /─3 .byte 1,0x09 # 34─34 4 .byte 1,0x07 # 35─35 5 .byte 1,0x00 # 36─36 6 .byte 5,0x01 # 37─3b 7─; .byte 1,0x05 # 3c─3c < .byte 1,0x07 # 3d─3d = .byte 1,0x00 # 3e─3e > .byte 37,0x01 # 3f─63 ?─c .byte 4,0x00 # 64─67 d─g .byte 1,0x06 # 68─68 h .byte 1,0x07 # 69─69 i .byte 2,0x05 # 6a─6b j─k .byte 20,0x01 # 6c─7f l─⌂ .byte 1,0x05 # 80─80 Ç .byte 1,0x07 # 81─81 ü .byte 2,0x05 # 82─83 é─â .byte 22,0x01 # 84─99 ä─Ö .byte 1,0x08 # 9a─9a Ü .byte 13,0x01 # 9b─a7 ¢─º .byte 1,0x05 # a8─a8 ¿ .byte 1,0x07 # a9─a9 ⌐ .byte 6,0x01 # aa─af ¬─» .byte 8,0x09 # b0─b7 ░─╖ .byte 8,0x0a # b8─bf ╕─┐ .byte 2,0x09 # c0─c1 └─┴ .byte 1,0x08 # c2─c2 ┬ .byte 3,0x01 # c3─c5 ├─┼ .byte 1,0x09 # c6─c6 ╞ .byte 1,0x02 # c7─c7 ╟ .byte 1,0x0b # c8─c8 ╚ .byte 1,0x01 # c9─c9 ╔ .byte 1,0x08 # ca─ca ╩ .byte 2,0x01 # cb─cc ╦─╠ .byte 1,0x09 # cd─cd ═ .byte 6,0x01 # ce─d3 ╬─╙ .byte 2,0x09 # d4─d5 ╘─╒ .byte 14,0x01 # d6─e3 ╓─π .byte 4,0x09 # e4─e7 Σ─τ .byte 2,0x01 # e8─e9 Φ─Θ .byte 1,0x08 # ea─ea Ω .byte 5,0x01 # eb─ef δ─∩ .byte 1,0x00 # f0─f0 ≡ .byte 1,0x01 # f1─f1 ± .byte 2,0x00 # f2─f3 ≥─≤ .byte 2,0x01 # f4─f5 ⌠─⌡ .byte 1,0x03 # f6─f6 ÷ .byte 1,0x04 # f7─f7 ≈ .byte 12,0x01 # f8─103 .byte 1,0x00 # 104─104 .byte 5,0x01 # 105─109 .byte 1,0x00 # 10a─10a .byte 1,0x01 # 10b─10b .byte 1,0x00 # 10c─10c .byte 2,0x01 # 10d─10e .byte 1,0x00 # 10f─10f .byte 20,0x01 # 110─123 .byte 4,0x00 # 124─127 .byte 14,0x01 # 128─135 .byte 1,0x00 # 136─136 .byte 1,0x01 # 137─137 .byte 8,0x00 # 138─13f .byte 48,0x01 # 140─16f .byte 4,0x09 # 170─173 .byte 4,0x01 # 174─177 .byte 1,0x0c # 178─178 .byte 43,0x01 # 179─1a3 .byte 1,0x09 # 1a4─1a4 .byte 1,0x01 # 1a5─1a5 .byte 2,0x00 # 1a6─1a7 .byte 4,0x01 # 1a8─1ab .byte 1,0x09 # 1ac─1ac .byte 13,0x01 # 1ad─1b9 .byte 1,0x09 # 1ba─1ba .byte 7,0x01 # 1bb─1c1 .byte 1,0x09 # 1c2─1c2 .byte 1,0x01 # 1c3─1c3 .byte 3,0x09 # 1c4─1c6 .byte 57,0x01 # 1c7─1ff .endobj xed_imm_bits_2d.rodata .byte 0,0 # terminator .byte 0,0,0,0,0,0 # padding .previous .init.start 300,_init_x86tab call rldecode lodsl lodsw .init.end 300,_init_x86tab