6bd8c936e3
x86-64-asm: Add mov[sz]xq opcodes
...
This adds the zero/sign-extending opcodes with 64bit destinations.
2016-05-12 00:57:02 +02:00
b9f01dffc6
x86-64-asm: Clean up 64bit immediate support
...
Fix it to actually be able to parse 64bit immediates (enlarge
operand value type). Then, generally there's no need for accepting
IM64 anywhere, except in the 0xba+r mov opcodes, so OP_IM is
unnecessary, as is OPT_IMNO64. Improve the generated code a bit
by preferring the 0xc7 opcode for im32->reg64, instead of the
im64->reg64 form (which we therefore hardcode).
2016-05-11 23:47:02 +02:00
613962e353
x86-64 asm: Remove useless jmp opcode
...
Also remove the hacky mod/rm byte emission during
disp/imm writing.
2016-05-11 18:56:19 +02:00
bd93dc6923
x86: Improve cmov handling
...
cmov can accept multi sizes, but is also a OPC_TEST opcode,
deal with this.
2016-05-11 18:54:24 +02:00
5e47b08dc8
[x86] Fix some asm problems
...
A bag of assembler fixes, to be either compatible with GAS
(e.g. order of 'test' operands), accept more instructions,
count correct foo{bwlq} variants on x86_64, fix modrm/sib bytes
on x86_64 to not use %rip relative addressing mode, to not use
invalid insns in tests/asmtest.S for x86_64.
Result is that now output of GAS and of tcc on tests/asmtest.S
is mostly the same.
2016-05-09 23:17:47 +02:00
e260b03686
Allow tcc to understand a setob,... opcodes as alias to seto,...
...
PS: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20101122/112576.html
This is fix PR8686 for llvm: accepting a 'b' suffix at the end
of all the setcc instructions.
2015-01-06 22:59:19 +03:00
1b85b55059
i386-asm: support "pause" opcode
2011-02-24 09:38:13 -08:00
bec84fa00a
tccasm: support alternate .type syntaxes
2011-02-24 09:24:02 -08:00
15b8a57096
tccpp: treat gas comments in .S files as raw text, not tokens
2011-02-23 15:13:08 -08:00
0d9376da70
tccasm: accept bracketed offset expressions
2011-02-01 15:53:48 -08:00
47b4cf22cd
tccasm: accept "fmul/fadd st(0),st(n)" (dietlibc ipow/atanh)
2011-02-01 15:49:37 -08:00
87d84b7cb8
tccasm: allow one-line prefix+op things like "rep stosb"
2011-02-01 15:37:58 -08:00
a25325e9be
tccasm: define __ASSEMBLER__ for .S files, like gcc does
2011-02-01 15:26:21 -08:00
6839382480
asmtest: avoid testing against complex nop alignment in gas
...
.align #,0x90 in gas ignores the 0x90 and outputs any kind
of nop it feels like. the one avoided by this patch is a 7
byte nop, which gas has been doing since at least 1999:
http://sourceware.org/ml/binutils/1999-10/msg00083.html
In order to match what gas does, we would need to make
code alignment target-specific, import a lot of code, and
face the question: exactly which gas {version,target,tune}
combo are we trying to match? see i386_align_code in:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-i386.c?annotate=1.460&cvsroot=src
The smart noppery is turned on via the special casing of 0x90
at line 438 in md_do_align in:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/config/tc-i386.h?annotate=1.1&cvsroot=src
2011-01-23 16:46:24 -08:00
2047f88334
i386-asm: accept retl as a synonym for ret
2011-01-21 01:35:28 -08:00
f43fafc680
accept multiple comma separated symbols for .globl/.global directives, like gas does
2011-01-20 02:00:50 -08:00
045cff28fe
fix asmtest (somehow), update Makefiles
2009-07-18 21:54:51 +02:00
ea5e81bd6a
new subdirs: include, lib, tests
2009-04-18 15:08:03 +02:00