diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2014-05-05 00:30:58 +0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2014-05-05 11:20:17 -0700 |
commit | aa29b1d93f5a927c76aeee3d9e0830874015e7df (patch) | |
tree | c9158abbe0b89ec55b9dde24e54dd99c04d2c0de /disasm.c | |
parent | 429beab924958b75b91606f9b2da354804ca6eb5 (diff) | |
download | nasm-aa29b1d93f5a927c76aeee3d9e0830874015e7df.tar.gz nasm-aa29b1d93f5a927c76aeee3d9e0830874015e7df.tar.bz2 nasm-aa29b1d93f5a927c76aeee3d9e0830874015e7df.zip |
assemble.c: Don't drop rex prefix from instruction itself
emit_rex is supposed to write REX prefix into output stream
if needed, but we happen to drop it off on a first write
which breaks REX required instructions if TIMES directive
is used.
For example the code like
| times 4 movq xmm11, xmm11
compiles into
| 0000000000000000 <.text>:
| 0: f3 45 0f 7e db movq %xmm11,%xmm11
| 5: f3 0f 7e db movq %xmm3,%xmm3
| 9: f3 0f 7e db movq %xmm3,%xmm3
| d: f3 0f 7e db movq %xmm3,%xmm3
instead of proper
| 0000000000000000 <.text>:
| 0: f3 45 0f 7e db movq %xmm11,%xmm11
| 5: f3 45 0f 7e db movq %xmm11,%xmm11
| a: f3 45 0f 7e db movq %xmm11,%xmm11
| f: f3 45 0f 7e db movq %xmm11,%xmm11
http://bugzilla.nasm.us/show_bug.cgi?id=3392278
Reported-by: Javier <elpochodelagente@gmail.com>
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'disasm.c')
0 files changed, 0 insertions, 0 deletions