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
f3cee9ceff
x86-asm: Get rid of is_short_jump
...
Can be implemented differently.
2016-05-11 23:45:14 +02:00
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
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
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
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
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
569fba6db9
Merge the integer members of union CValue into "uint64_t i".
2015-11-17 19:09:35 +00:00
89ad24e7d6
Revert all of my changes to directories & codingstyle.
2015-07-29 16:57:12 -04:00
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
41031221c8
Trim trailing spaces everywhere.
2015-07-27 12:43:40 -04:00
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
3e9a7e9d69
Corrected spelling mistakes in comments and strings
2014-04-07 13:31:00 +02:00
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
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
bf374a5f23
rename error/warning -> tcc_(error/warning)
2011-08-11 17:07:56 +02:00
0d9376da70
tccasm: accept bracketed offset expressions
2011-02-01 15:53:48 -08:00
87d84b7cb8
tccasm: allow one-line prefix+op things like "rep stosb"
2011-02-01 15:37:58 -08:00
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
88a3ccab9f
allow tcc be build from separate objects
...
If you want that, run: make NOTALLINONE=1
2009-12-20 01:53:49 +01:00
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
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
50055880f9
asm 32/64: replace (long)sym->next by sym->jnext
2009-11-21 23:43:30 +01:00
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
2fdb45f577
fix ambiguity
...
Signed-off-by: aldot <rep.dot.nop@gmail.com >
2009-11-13 18:09:02 +01:00
3065e70630
Fixed compilation error in i386-asm.c
2009-11-13 18:09:01 +01:00
0d768b9713
added 16-bit x86 assembly support
2009-11-13 18:08:58 +01:00
cd24bd05b4
get rid of a warning and fix .bat
2008-03-25 21:05:48 +00:00
88b3cb570e
Comply to c89 compilers other than gcc (Hanzac Chen)
2008-03-25 20:58:37 +00:00
6ca0299e5b
allow (base,index) as alias to (base,index,1)
2006-02-20 21:16:10 +00:00
3ba1190eb4
segment override prefix support (Filip Navara)
2005-09-03 22:03:39 +00:00
d65463809c
fixed 'no base' modrm generation - better asm constraints handling
2004-10-18 00:13:39 +00:00
8f5e44a439
changed license to LGPL
2003-05-24 14:11:17 +00:00
68c800981e
added % constraint
2003-04-27 11:46:10 +00:00
4149fedd7b
added 'A' asm constraint
2003-04-14 22:22:54 +00:00
7893a9ecdf
asm support
2003-01-06 20:21:42 +00:00