1 2008-12-31 Ulrich Drepper <drepper (a] redhat.com> 2 3 * i386_disasm.c (i386_disasm): Correct resizing of buffer. 4 5 * i386_parse.y (struct argstring): Add off element. 6 (off_op_str): New global variable. 7 (print_op_str): Print strings as concatenated strings. Keep track 8 of index and length. Update ->off element. 9 (print_op_str_idx): New function. 10 (instrtable_out): Mark op%d_fct as const. 11 Emit two tables for the strings: the string itself (op%d_str) and the 12 index table (op%d_str_idx). 13 * i386_disasm.c (i386_disasm): Adjust for new op%d_str definition. 14 15 * i386_disasm.c [X86_64] (i386_disasm): Handle rex prefix when 16 printing only prefix. 17 18 * i386_disasm.c (i386_disasm): Minor optimizations. 19 20 * i386_parse.y (instrtable_out): No need to emit index, the reader can 21 keep track. 22 * i386_disasm.c (i386_disasm): The index is not emitted anymore, no 23 need to skip it. 24 25 * i386_disasm.c (amd3dnow): Mark as const. 26 27 * defs/i386: Add blendvpd and blendvps opcodes. 28 29 2008-12-30 Ulrich Drepper <drepper (a] redhat.com> 30 31 * defs/i386: Add blendpd and blendps opcodes. 32 33 2008-12-19 Ulrich Drepper <drepper (a] redhat.com> 34 35 * defs/i386: Add entry for AMD 3DNOW. 36 * i386_disasm.c: Implement AMD 3DNOW disassembly. 37 38 2008-12-17 Ulrich Drepper <drepper (a] redhat.com> 39 40 * i386_disasm.c (i386_disasm): If instruction matches prefix, 41 undoing the prefix match finishes the instruction. 42 43 2008-01-21 Roland McGrath <roland (a] redhat.com> 44 45 * defs/i386: Fix typo in comment. 46 * i386_disasm.c (i386_disasm): Handle cltq, cqto. 47 48 * i386_parse.y: Add sanity check for NMNES macro value. 49 * Makefile.am (i386_parse.o): Fix target in dependency rule. 50 (i386_parse.h): New target with empty commands. 51 (i386_lex.o): Depend on it in place of i386_parse.c. 52 53 2008-01-21 Ulrich Drepper <drepper (a] redhat.com> 54 55 * Makefile.am (EXTRA_DIST): Remove defs/x86_64. 56 57 2008-01-14 Ulrich Drepper <drepper (a] redhat.com> 58 59 * defs/i386: Add fixes for opcodes with register number in opcode, 60 64-bit immediate forms, nop with rex.B. 61 * i386_data.h [X86_64] (FCT_imm64$w): New function. 62 (FCT_oreg): New function. 63 (FCT_oreg$w): New function. 64 * i386_disasm.c (i386_disasm): Reinitialize fmt always before 65 starting the loop to process the string. Handle 0x90 special for 66 x86-64. 67 * i386_parse.y (fillin_arg): Expand synonyms before concatening to 68 form the function name. 69 70 2008-01-11 Ulrich Drepper <drepper (a] redhat.com> 71 72 * i386_disasm.c (struct output_buffer): Remove symcb and symcbarg. 73 (i386_disasm): Remove appropriate initializers. 74 Use symcb to lookup symbol strings. 75 76 * i386_disasm.c (struct output_buffer): Add labelbuf, labelbufsize, 77 symaddr_use, and symaddr fields. 78 (i386_disasm): Remove labelbuf and labelbufsize variables. 79 Add back %e format. Implement %a and %l formats. 80 81 * i386_data.h (general_mod$r_m): Set symaddr_use and symaddr for %rip 82 base addressing. 83 84 * i386_disasm.c (i386_disasm): Resize output buffer if necessary. 85 Optimize output_data initialization. Free buffers before return. 86 (struct output_data): Remove op1str field. Adjust code. 87 (i386_disasm): Store final NUL btye at end of functions. 88 89 2008-01-10 Ulrich Drepper <drepper (a] redhat.com> 90 91 * i386_data.h (FCT_crdb): New function. 92 (FCT_ccc): Use FCT_crdb. 93 (FCT_ddd): Likewise. 94 95 * defs/i386: Fix a few instructions with immediate arguments. 96 97 * i386_disasm.c: Rewrite interface to callback functions for operands 98 to take a single pointer to a structure. 99 * i386_data.h: Adjust all functions. 100 101 2008-01-08 Ulrich Drepper <drepper (a] redhat.com> 102 103 * Makefile.am: Enable x86-64 again. 104 * defs/i386: Lots of changes for x86-64. 105 * i386_data.h: Add support for use in x86-64 disassembler. 106 * i386_disasm.c: Likewise. 107 * i386_parse.y: Likewise. 108 * defs/x86_64: Removed. 109 110 2008-01-04 Ulrich Drepper <drepper (a] redhat.com> 111 112 * defs/i386: Cleanups, remove masks which are not needed. 113 Add remaining Intel opcodes. 114 * i386_data.h (FCT_imm8): Check for input buffer overrun. 115 * i386_disasm.c (i386_disasm): Likewise. 116 * i386_parse.y: Remove suffixes which are not needed anymore. 117 118 2008-01-03 Ulrich Drepper <drepper (a] redhat.com> 119 120 * defs/i386: Add yet more SSE instructions. 121 122 2008-01-02 Ulrich Drepper <drepper (a] redhat.com> 123 124 * i386_disasm.c (i386_disasm): Extend matcher to allow tables to 125 contain instructions with prefixes. 126 * defs/i386: Use for many SSE operations. 127 * i386_data.h (FCT_mmxreg2): Removed. 128 129 2008-01-01 Ulrich Drepper <drepper (a] redhat.com> 130 131 * defs/i386: More 0f prefix support. 132 * i386_data.h (FCT_mmxreg): Implement. 133 (FCT_mmxreg2): Implement. 134 (FCT_mmreg): Remove. 135 * i386_disasm.c (i386_disasm): More special instructions. 136 Fix tttn suffix for cmov. 137 * i386_parse.y: Simplify test for mod/r_m mode. 138 139 2007-12-31 Ulrich Drepper <drepper (a] redhat.com> 140 141 * defs/i386: Fix order or arguments for mov of control/debug registers. 142 * i386_data.h (FCT_ccc): Implement 143 (FCT_ddd): Implement 144 145 2007-12-30 Ulrich Drepper <drepper (a] redhat.com> 146 147 * defs/i386: Fix 0f groups 6 and 7. 148 * i386_data.c (FCT_mod$16r_m): Implement. 149 * i386_disasm.c (i386_disasm): Third parameter can also have string. 150 151 2007-12-29 Ulrich Drepper <drepper (a] redhat.com> 152 153 * defs/i386: Add lots of floating point ops. 154 * i386_data.h (FCT_fmod$fr_m): Removed. 155 (FCT_freg): Implement. 156 * i386_disasm.c (i386_disasm): Implement suffix_D. 157 * i386_parse.y: Emit suffix_D. 158 159 * defs/i386: Use rel instead of dispA. 160 Fix lcall, dec, div, idiv, imul, inc, jmp, ljmp, mul, neg, not, push, 161 test. 162 163 * i386_data.h (FCT_dispA): Removed. 164 (FCT_ds_xx): Add test for end of input buffer. 165 * i386_disasm.c (ABORT_ENTRY): Removed. 166 (i386_disasm): Fix handling of SIB. Pass correct address value to 167 operand callbacks. 168 169 * Makefile.am (*.mnemonics): Filter out INVALID entry. 170 * defs/i386: Define imms8 and use in appropriate places. 171 Add INVALID entries for special opcodes with special mnemonics. 172 Fix int3. Fix typo in shl. Correct xlat. 173 * i386_data.h (FCT_ds_xx): New function. 174 (FCT_ds_si): Use it. 175 (FCT_ds_bx): New function. 176 (FCT_imms8): New function. 177 * i386_disasm.c (MNE_INVALID): Define. 178 (i386_disasm): Handle invalid opcodes in mnemonics printing, not 179 separately. Fix address value passed to operand handlers. 180 * i386_parse.y (bx_reg): Define. 181 (instrtable_out): Handle INVALID entries differently, just use 182 MNE_INVALID value for .mnemonic. 183 184 2007-12-28 Ulrich Drepper <drepper (a] redhat.com> 185 186 * defs/i386: Fix shift and mov immediate instructions. 187 * i386_data.h (FCT_imm16): Implement. 188 189 * defs/i386: Use absval instead of abs of lcall and ljmp. 190 Add parameters for cmps. Fix test and mov immediate. 191 * i386_data.h: Implement FCT_absval. 192 * i386_disasm.c: Handle data16 for suffix_w and FCT_imm. 193 194 * defs/i386: Move entries with 0x9b prefix together. 195 * i386_disasm.c (i386_disasm): Fix recognizing insufficient bytes in 196 input. Handle data16 with suffix_W. 197 198 * i386_data.h (FCT_*): Add end parameter to all functions. Check 199 before using more bytes. 200 (FCT_sel): Implement. 201 * i386_disasm.c (i386_disasm): Better handle end of input buffer. 202 Specal opcode 0x99. 203 204 * Makefile.am: Use m4 to preprocess defs/* files. 205 * defs/i386: Adjust appropriately. 206 * i386_data.c (FCT_ax): Implement. 207 (FCT_ax$w): Use FCT_ax. 208 * i386_disasm.c (ADD_STRING): Use _len instead of len. 209 (i386_disasm): If no instruction can be matched because of lack of 210 input and prefixes have been matched, print prefixes. 211 Recognize abort entries. 212 Handle special cases. 213 * i386_gendis.c: Recognize - input file name. 214 * i386_lex.c: Recognize INVALID token. 215 * i386_parse.y: Handle INVALID token input. 216 217 * defs/i386: Fix mov, pop. 218 * i386_data.h (FCT_sreg3): Implement. 219 220 2007-12-27 Ulrich Drepper <drepper (a] redhat.com> 221 222 * defs/i386: Fix adc, add, cmp, or, sbb, sub, xchg, xor. 223 * i386_data.h (FCT_imms): New function. 224 (FCT_imm$s): Use FCT_imms for handling of signed values. 225 (FCT_imm8): Sign extend values. 226 * i386_disasm.c (i386_disasm): Implement suffix_w0. 227 * i386_parse.y: Emit suffix w0. 228 229 * i386_data.h (FCT_disp8): Add 0x prefix. 230 (FCT_ds_si): Implement. 231 * i386_disasm.c (i386_disasm): Increment addr for invalid prefixes. 232 Implement tttn suffix. 233 * i386_parse.y: Emit tttn suffix definition. 234 235 2007-12-26 Ulrich Drepper <drepper (a] redhat.com> 236 237 * i386_data.h (struct instr_enc): Use suffix field. 238 (FCT_dx): Fill in body. 239 (FCT_es_di): Likewise. 240 (FCT_imm$s): Sign-extended byte values. 241 * i386_disasm.c: Protect ADD_CHAR and ADD_STRING macros. Adjust uses. 242 (i386_disasm): Handle suffix. 243 * i386_parse.y: Emit suffix information. 244 * defs/i386: Remove unnecessary suffixes. 245 246 * Makefile.am: Disable building x86-64 version for now. 247 248 * defs/i386: Fix and, bound, cmp, or, pop, sbb, sub, xor. 249 * i386_data.h: Pass pointer to prefix to functions. If not prefixes 250 are consumed this means invalid input. 251 * i386_disasm.c: Fix prefix printing. Adjust function calls for 252 parameter change. 253 * i386_parse.y: Recognize moda prefix. 254 255 2007-12-21 Ulrich Drepper <drepper (a] redhat.com> 256 257 * i386_data.h: Fix SIB handling. 258 * i386_disasm.c: Likewise. 259 260 2007-12-19 Ulrich Drepper <drepper (a] redhat.com> 261 262 * defs/i386: Fix up 'and' opcode. 263 264 2007-10-31 Ulrich Drepper <drepper (a] redhat.com> 265 266 * Makefile.am: Add dependencies of the generated files on the source 267 files. 268 (i386_lex_CFLAGS): Add -Wno-sign-compare. 269 270 * defs/i386: A lot more data. 271 * defs/x86_64: Likewise. 272 * i386_data.h (struct instr_enc): Add off1_3, off2_3, and off3_3 273 fields. 274 (opfct_t): Add parameter for third operand. 275 (FCT_*): Likewise. 276 (data_prefix): New function. 277 (FCT_abs): Implement. 278 (FCT_ax): Renamed to FCT_ax$w amd implement. 279 (FCT_disp8): Implement. 280 (FCT_dispA): Implement. 281 (FCT_imm): Implement. 282 (FCT_imm$w): Implement. 283 (FCT_imm$s): Don't zero-pad numbers. 284 (FCT_imm8): Likewise. 285 (FCT_rel): Likewise. 286 (general_mod$r_m): New function. 287 (FCT_mod$r_m): Use it. 288 (FCT_mod$r_m$w): New function. 289 (FCT_mod$8r_m): New function. 290 (FCT_reg): Correctly handle 16-bit registers. 291 (FCT_reg$w): New function. 292 * i386_disasm.c (i386_disasm): Handle prefixes better. 293 Pass third parameter to operand functions. 294 * i386_parse.y (struct instruction): Add off3 field. 295 Handle third operand throughout. 296 297 2007-02-05 Ulrich Drepper <drepper (a] redhat.com> 298 299 * i386_disasm.c: New file. 300 * i386_data.h: New file. 301 * i386_gendis.c: New file. 302 * i386_lex.l: New file. 303 * i386_parse.y: New file. 304 * memory-access.h: New file. 305 * x86_64_disasm.c: New file. 306 * defs/i386: New file. 307 * defs/i386.doc: New file. 308 * defs/x86_64: New file. 309 310 2005-02-15 Ulrich Drepper <drepper (a] redhat.com> 311 312 * Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2. 313 314 2005-02-05 Ulrich Drepper <drepper (a] redhat.com> 315 316 * Makefile.am (AM_CFLAGS): Define, instead of adding things to DEFS. 317 318 2003-08-11 Ulrich Drepper <drepper (a] redhat.com> 319 320 * Moved to CVS archive. 321