Michael Matz
080ec9fadd
x86-asm: Consolidate insn descriptions
...
Use OPC_BWLX and OPC_WLX in i386-asm.h and x86_64-asm.h to
reduce number of differences between both.
2016-05-14 04:05:34 +02:00
Michael Matz
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
Michael Matz
f3cee9ceff
x86-asm: Get rid of is_short_jump
...
Can be implemented differently.
2016-05-11 23:45:14 +02:00
Michael Matz
55bd08c5ae
x86-asm: Remove old ASM_16 code
...
This code was inactive since a long time (and was deactivated because
it was wrong to start with) and just clutters the sources. Remove
it.
2016-05-11 19:13:38 +02:00
Michael Matz
f0fa5603cf
x86-64: Run asmtest as well
...
This fixes and activates the asm test that's part of tcctest.c
also on x86-64, requiring a small fix for the 'm' constraint.
2016-05-11 19:00:02 +02:00
Michael Matz
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
Michael Matz
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
Michael Matz
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
Vlad Vissoultchev
224236f57c
Improve hash performance
...
- better `TOK_HASH_FUNC`
- increases `hash_ident` initial size to 16k (from 8k)
- `cstr_cat` uses single `realloc` + `memcpy`
- `cstr_cat` can append terminating zero
- `tok_str_realloc` initial size to 16 (from 8)
- `parse_define` uses static `tokstr_buf`
- `next` uses static `tokstr_buf`
- fixes two latent bugs (wrong deallocations in libtcc.c:482 and
tccpp.c:2987)
2016-04-17 17:25:55 +03:00
Edmund Grimley Evans
1c2dfa1f4b
Change the way struct CStrings are handled.
...
A CString used to be copied into a token string, which is an int array.
On a 64-bit architecture the pointers were misaligned, so ASan gave
lots of warnings. On a 64-bit architecture that required memory
accesses to be correctly aligned it would not work at all.
The CString is now included in CValue instead.
2015-11-26 12:40:50 +00:00
Edmund Grimley Evans
569fba6db9
Merge the integer members of union CValue into "uint64_t i".
2015-11-17 19:09:35 +00:00
gus knight
89ad24e7d6
Revert all of my changes to directories & codingstyle.
2015-07-29 16:57:12 -04:00
gus knight
47e06c6d4e
Reorganize the source tree.
...
* Documentation is now in "docs".
* Source code is now in "src".
* Misc. fixes here and there so that everything still works.
I think I got everything in this commit, but I only tested this
on Linux (Make) and Windows (CMake), so I might've messed
something up on other platforms...
2015-07-27 16:03:25 -04:00
gus knight
41031221c8
Trim trailing spaces everywhere.
2015-07-27 12:43:40 -04:00
Edmund Grimley Evans
aa812e8745
Convert some lines from ISO-8859-1 to UTF-8.
...
perl -i -pe 'use Text::Iconv;
$c1 = Text::Iconv->new("utf-8", "utf-8");
$c2 = Text::Iconv->new("iso-8859-1", "utf-8");
if (!$c1->convert($_)) { $_ = $c2->convert($_); }' \
`find * -type f`
2015-03-11 07:30:03 +00:00
Vincent Lefevre
3e9a7e9d69
Corrected spelling mistakes in comments and strings
2014-04-07 13:31:00 +02:00
Thomas Preud'homme
a1a691a030
Detect correct instruction with incorrect operands
...
Display a different warning when an instruction is recognized by tcc but
the operands found do not correspond to the constraints of the
instruction.
2013-09-24 15:37:11 +02:00
Urs Janssen
0bdbd49eac
add version number to manpage
...
avoid c++/c99 style comments in preprocessor directives
avoid leadings whitespaces in preprocessor directives
mention implemented variable length arrays in documentation
fixed ambiguous option in texi2html call (Austin English)
2013-02-17 00:48:51 +01:00
grischka
bf374a5f23
rename error/warning -> tcc_(error/warning)
2011-08-11 17:07:56 +02:00
Joe Soroka
0d9376da70
tccasm: accept bracketed offset expressions
2011-02-01 15:53:48 -08:00
Joe Soroka
87d84b7cb8
tccasm: allow one-line prefix+op things like "rep stosb"
2011-02-01 15:37:58 -08:00
grischka
50b040ef83
win64: add tiny unwind data for setjmp/longjmp
...
This enables native unwind semantics with longjmp on
win64 by putting an entry into the .pdata section for
each compiled fuction.
Also, the function now use a fixed stack and store arguments
into X(%rsp) rather than using push.
2009-12-20 01:54:37 +01:00
grischka
88a3ccab9f
allow tcc be build from separate objects
...
If you want that, run: make NOTALLINONE=1
2009-12-20 01:53:49 +01:00
grischka
1308e8ebcf
integrate x86_64-asm.c into i386-asm.c
...
Also, disable 16bit support for now as it causes bugs
in 32bit mode. #define I386_ASM_16 if you want it.
2009-12-19 22:16:20 +01:00
grischka
e500c9118a
i386-asm: fix imul
...
With imul the 3rd operand defaults to the 2nd on. The previous
logic left 'op_type[2]' uninitialized which caused the bug to
show up only sometimes.
2009-12-06 17:41:22 +01:00
grischka
50055880f9
asm 32/64: replace (long)sym->next by sym->jnext
2009-11-21 23:43:30 +01:00
grischka
0a3bcb57f6
fix 32bit asm
...
The new 16bit code was causing wrong 0x66 prefixes
in 32bit code.
The fix possibly breaks the feature on 16bit asm.
2009-11-14 20:05:22 +01:00
Bernhard Reutner-Fischer
2fdb45f577
fix ambiguity
...
Signed-off-by: aldot <rep.dot.nop@gmail.com>
2009-11-13 18:09:02 +01:00
Frederic Feret
3065e70630
Fixed compilation error in i386-asm.c
2009-11-13 18:09:01 +01:00
Frederic Feret
0d768b9713
added 16-bit x86 assembly support
2009-11-13 18:08:58 +01:00
grischka
cd24bd05b4
get rid of a warning and fix .bat
2008-03-25 21:05:48 +00:00
grischka
88b3cb570e
Comply to c89 compilers other than gcc (Hanzac Chen)
2008-03-25 20:58:37 +00:00
bellard
6ca0299e5b
allow (base,index) as alias to (base,index,1)
2006-02-20 21:16:10 +00:00
bellard
3ba1190eb4
segment override prefix support (Filip Navara)
2005-09-03 22:03:39 +00:00
bellard
d65463809c
fixed 'no base' modrm generation - better asm constraints handling
2004-10-18 00:13:39 +00:00
bellard
8f5e44a439
changed license to LGPL
2003-05-24 14:11:17 +00:00
bellard
68c800981e
added % constraint
2003-04-27 11:46:10 +00:00
bellard
4149fedd7b
added 'A' asm constraint
2003-04-14 22:22:54 +00:00
bellard
7893a9ecdf
asm support
2003-01-06 20:21:42 +00:00