Commit Graph

39 Commits

Author SHA1 Message Date
Danny Milosavljevic
483625065f arm-asm: Add ldrex, ldrexb, strex, strexb 2021-01-05 17:46:08 +00:00
Danny Milosavljevic
54ef167111 arm-asm: Implement branch to label 2021-01-05 17:46:08 +00:00
Danny Milosavljevic
78d0f07e32
arm-asm: Improve immediate error message in asm_data_processing_opcode. 2021-01-03 15:54:19 +01:00
Danny Milosavljevic
a7205f738b
arm-asm: Support shift of 0 in asm_shift_opcode 2021-01-03 15:54:19 +01:00
Danny Milosavljevic
7f98aefddf
arm-asm: Implement subst_asm_operand 2021-01-03 02:34:12 +01:00
Danny Milosavljevic
9a460d3234
arm-asm: Implement asm_compute_constraints 2021-01-03 02:34:12 +01:00
Danny Milosavljevic
795d7d5ce6
arm-asm: Implement asm_gen_code 2021-01-03 02:34:12 +01:00
Danny Milosavljevic
d66c155239
arm-asm: Support bigger immediates for data processing instructions 2021-01-03 02:34:12 +01:00
Danny Milosavljevic
14b7973ab5
arm-asm: Add movw 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
c882d03673
arm-asm: Add movt 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
86cc9c587b
arm-asm: Raise error if asm_data_processing_opcode and asm_shift_opcode try to use PC for register-controlled shifts 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
79567004b4
arm-asm: Raise error if more than two operands are specified on mov, mvn, cmp, cmn, tst, teq 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
612d9d7ae6
arm-asm: Print a warning if asm_binary_opcode is used with SP as operand 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
67b402fda4
arm-asm: Raise an error if asm_binary_opcode is used with PC as operand 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
3a6f3e5f30
arm-asm: Add error case in asm_multiplication_opcode 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
e0cb5184f5
arm-asm: Warn if regset registers are not specified in ascending order 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
49365d563e
arm-asm: Support rotation for sxtb, sxth, uxtb, uxth 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
daaa88ce68
arm-asm: For data processing instructions, support shifts and rotations. 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
abef8f6ca7
arm-asm: Add lsl, lsr, asr, ror, rrx 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
b940d8edb2
arm-asm: Optimize gen_le32 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
b85c3e1595
arm-asm: Add b, bl, bx, blx 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
3b1f06c3b2
arm-asm: Add and, eor, sub, rsb, add, adc, sbc, rsc, tst, teq, cmp, cmn, orr, mov, bic, mvn 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
c7682dd9aa
arm-asm: Add ldr, ldrb, str, strb 2021-01-03 02:34:11 +01:00
Danny Milosavljevic
632b213756
arm-asm: Add stmda, ldmda, stm, ldm, stmia, ldmia, stmdb, ldmdb, stmib, ldmib 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
82663d33bb
arm-asm: Add mul, mla, smull, umull, smlal, umlal 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
c4e13c1ef9
arm-asm: Add clz, sxtb, sxth, uxtb, uxth 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
c9e0c2a543
arm-asm: Add swi 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
b495959e4b
arm-asm: Add push, pop
Also edited tcctok.h to not redefine push, pop
2021-01-03 02:34:10 +01:00
Danny Milosavljevic
c5428cd19c
arm-asm: Add parse_operand, Operand
tccpp: Allow '#' token to reach the assembler.
2021-01-03 02:34:10 +01:00
Danny Milosavljevic
a16678e9f3
arm-asm: Add wfe, wfi 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
aaf052391d
arm-asm: Add nop 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
9d302620c2
arm-asm: Remove asm_error 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
b10824dcdc
arm-asm: Update copyright header 2021-01-03 02:34:10 +01:00
Danny Milosavljevic
f88ded6c2d
arm-asm: Implement asm_parse_regvar and asm_clobber 2021-01-03 02:34:10 +01:00
grischka
72729d8e36 allow libtcc states to be used concurrently
This allows creation of TCCStates and operation with API
calls independently from each other, even from threads.

Frontend (option parsing/libtcc.c) and backend (linker/tccelf.c)
now depend only on the TCCState (s1) argument.

Compilation per se (tccpp.c, tccgen.c) is still using
globals for convenience.  There is only one entry point
to this section which is tcc_compile() which is protected
by a semaphore.

There are some hacks involved to avoid too many changes,
as well as some changes in order to avoid too many hacks ;)

The test libtcc_test_mt.c shows the feature.  Except this
new file the patch adds 87 lines overall.
2019-12-11 02:36:19 +01:00
grischka
4b3c6e74ab tccgen: nodata_wanted fix, default ONE_SOURCE, etc...
tccgen.c:
  doubles need to be aligned, on ARM.  The section_reserve()
  in init_putv does not do that.
-D ONE_SOURCE: is now the default and not longer needed. Also,
  tcc.h now sets the default native target.  These both make
  compiling tcc simple as "gcc tcc.c -o tcc -ldl" again.
arm-asm.c:
  enable pseudo asm also for inline asm
tests/tests2/Makefile:
  disable bitfield tests except on windows and x86_64
  and don't generate-always
tcc.c:
  fix a loop with -dt on errors
configure:
  print compiler version (as recognized)
tccpp.c:
  actually define symbols for tcc -dt
  clear static variables (needed for -dt or libtcc usage)
96_nodata_wanted.c:
  use __label__ instead of asm
lib/files:
  use native symbols (__i386__ etc.) instead of TCC_TARGET_...
2017-07-23 21:24:11 +02:00
grischka
28435ec58c configure: --config-musl/-uClibc switch & misc cleanups
- configure:
  - add --config-uClibc,-musl switch and suggest to use
    it if uClibc/musl is detected
  - make warning options magic clang compatible
  - simplify (use $confvars instead of individual options)
- Revert "Remove some unused-parameter lint"
  7443db0d5f
  rather use -Wno-unused-parameter (or just not -Wextra)
- #ifdef functions that are unused on some targets
- tccgen.c: use PTR_SIZE==8 instead of (X86_64 || ARM64)
- tccpe.c: fix some warnings
- integrate dummy arm-asm better
2017-05-13 08:59:06 +02:00
grischka
bb93064d78 makefile: unify cross with native builds
supports building cross compilers on the fly without need
for configure --enable-cross

   $ make cross          # all compilers
   $ make cross-TARGET   # only TARGET-compiler & its libtcc1.a

with TARGET one from
   i386 x86_64 i386-win32 x86_64-win32 arm arm64 arm-wince c67

Type 'make help' for more information
2017-02-25 12:51:04 +01:00
grischka
569255e6c4 cross-compilers: allow individual configuration
since configure supports only native configuration
a file 'cross-tcc.mak' needs to be created manually.
It is included in the Makefile if present.

# ----------------------------------------------------
# Example config-cross.mak:
#
# windows -> i386-linux cross-compiler
# (it expects the linux files in <prefix>/i386-linux)

ROOT-i386 = {B}/i386-linux
CRT-i386 = $(ROOT-i386)/usr/lib
LIB-i386 = $(ROOT-i386)/lib:$(ROOT-i386)/usr/lib
INC-i386 = {B}/lib/include:$(ROOT-i386)/usr/include
DEF-i386 += -D__linux__

# ----------------------------------------------------

Also:
- use libtcc1-<target>.a instead of directories
- add dummy arm assembler
- remove include dependencies from armeabi.c/lib-arm64.c
- tccelf/ld_add_file: add SYSROOT (when defined) to absolute
  filenames coming from ld-scripts
2017-02-23 08:41:57 +01:00