Jan Nieuwenhuizen
31c69b8b00
mescc: Tinycc support: foo.bar[baz], foo->bar[baz] for typedef'd struct bar.
...
* module/language/c99/compiler.mes (expr->accu): foo.bar[baz],
foo->bar[baz] for typedef'd struct bar.
* scaffold/tests/7c-dynarray.c: Test it.
2017-08-05 12:39:36 +02:00
Jan Nieuwenhuizen
3f4cc96a7b
mescc: Tinycc support: foo[index]->bar for array bar.
...
* module/language/c99/compiler.mes (expr->accu*): foo[index]->bar for array bar.
* scaffold/tests/7e-struct-array-access.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-08-04 21:45:29 +02:00
Jan Nieuwenhuizen
50af730e00
Revert "mescc: Tinycc support: workaround for nyacc "\0" bug."
...
This reverts commit b160540e221dbeb96908823b5a3504bdbfd7f751.
Fixed by: https://lists.gnu.org/archive/html/guile-user/2017-08/msg00007.html
2017-08-04 11:45:15 +02:00
Jan Nieuwenhuizen
5c61c040c9
guix: use nyacc 0.80.41.
...
* guix.scm (nyacc): use 0.80.41.
2017-08-04 08:59:09 +02:00
Jan Nieuwenhuizen
d64a304a83
mescc: Tinycc support: ((unsigned char*)str)[i].
...
* module/language/c99/compiler.mes (expr->accu*): Consider size of
expr array deref.
* scaffold/tests/7d-cast-char.c: Test it.
2017-08-04 11:40:04 +02:00
Jan Nieuwenhuizen
949e320622
mescc: Tinycc support: ((unsigned char*)str)[0].
...
* module/language/c99/compiler.mes (expr->accu): Consider size of
expr array deref.
* stage0/x86.M1 (movzbl_0x32(%ebp),%eax): New define.
* scaffold/tests/7d-cast-char.c: Test it.
2017-08-04 11:34:01 +02:00
Jan Nieuwenhuizen
5fadb4cbbf
mescc: Tinycc support: define __linux__.
...
* module/language/c99/compiler.mes (c99-input->full-ast): Add
"__linux__=1" to cpp-defs.
2017-08-04 11:33:34 +02:00
Jan Nieuwenhuizen
cb99e3ca6e
mescc: Tinycc support: strcat.
...
* mlibc/libc-mes+tcc.c (strcat): Implement.
2017-08-01 13:26:17 +02:00
Jan Nieuwenhuizen
4fbd16aaac
mescc: Tinycc support: vsnprintf.
...
* module/language/c99/compiler.mes (ast-type->type): Support *p++ in test.
* mlibc/libc-mes+tcc.c (vsnprintf): Implement.
2017-08-01 13:24:23 +02:00
Jan Nieuwenhuizen
0b60a58809
mescc: Tinycc support: support foo.bar[baz], foo->bar[baz] for struct bar.
...
* module/language/c99/compiler.mes (struct-field): Use negative
pointer for struct array fields.
(expr->accu): support: support foo.bar[baz], foo->bar[baz] for struct bar.
* scaffold/tests/7c-dynarray.c: Test it.
2017-08-01 11:26:00 +02:00
Jan Nieuwenhuizen
c23a9ee01f
mescc: drop naive realloc.
...
* mlibc/libc-gcc.c (free, memcpy): Move from libc-mes+tcc.c.
(realloc): Use realloc from libc-mes+tcc.c
* mlibc/libc-gcc+tcc.c (free, memcpy, realloc): Remove.
* mlibc/libc-mes+tcc.c (free, memcpy, realloc): Remove.
* scaffold/tests/79-int-array.c (test): Update.
* scaffold/tests/7a-struct-char-array.c (test): Update.
2017-08-01 11:08:14 +02:00
Jan Nieuwenhuizen
1e37c9d9ea
mescc: Tinycc support: ((foo*) p) + n.
...
* module/language/c99/compiler.mes init-declr->pointer, expr->pointer,
expr->size): support: ((foo*) p) + n.
(expr->accu*): Consider field size for foo.bar[baz].
* scaffold/tests/7b-struct-int-array.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-07-31 12:19:23 +02:00
Jan Nieuwenhuizen
edb6bbcd9c
mescc: Tinycc support: field size of foo.bar[baz], foo->bar[baz].
...
Inspired by a patch from rain1 for foo->bar[baz].
* module/language/c99/compiler.mes (expr->accu):
(expr->accu*): Consider field size for foo.bar[baz].
* scaffold/tests/7a-struct-char-array.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-07-30 18:04:25 +02:00
Jan Nieuwenhuizen
6b5fcfb814
mescc: Tinycc support: fwrite.
...
* mlibc/libc-mes+tcc.c (fwrite): Implement.
2017-07-30 14:52:35 +02:00
Jan Nieuwenhuizen
63eded82e1
mescc: Tinycc support: fclose.
...
* mlibc/libc-mes+tcc.c (fclose): Implement.
2017-07-30 14:51:59 +02:00
rain1
7c233246d6
mescc: Tinycc support: fgetc.
...
* mlibc/libc-mes.c (fgetc): Implement.
2017-07-30 08:28:19 -04:00
rain1
0957094280
mescc: Tinycc support: fprintf.
...
* mlibc/libc-mes+tcc.c (fprintf): Implement.
2017-07-30 08:28:19 -04:00
rain1
ae9ce4e645
mescc: allow complicated enums expressions.
...
* module/language/c99/compiler.mes (p-expr->number): Support lshift, rshift, ash.
(enum-def-list->constants): Refactor using p-expr->number.
2017-07-30 08:28:19 -04:00
rain1
3f188d7268
mescc: support \x00 strings in M1.
...
* module/mes/M1.mes (object->m1): Support \x00 strings.
2017-07-30 08:28:19 -04:00
Jan Nieuwenhuizen
ec3c031b2f
mescc: Tinycc support: memmove.
...
* mlibc/libc-mes+tcc.c (memmove): Implement.
2017-07-30 13:59:06 +02:00
Jan Nieuwenhuizen
af8335dc7a
mescc: Tinycc support: strrchr.
...
* mlibc/libc-mes+tcc.c (strrchr): Implement.
2017-07-30 13:09:19 +02:00
Jan Nieuwenhuizen
8991e927c3
mescc: Tinycc support: strchr.
...
* mlibc/libc-mes+tcc.c (strchr): Implement.
2017-07-30 12:55:58 +02:00
Jan Nieuwenhuizen
18cb982687
mescc: Tinycc support: noisy stubs.
...
* mlibc/libc-mes+tcc.c: Noisy stubs.
2017-07-27 18:53:44 +02:00
Jan Nieuwenhuizen
9c4519af8d
mescc: Tinycc support: int foo[bar] = {baz,...}.
...
* scaffold/tests/79-int-array.c: Test it.
* make.scm (add-scaffold-test): Build it.
* module/language/c99/compiler.mes (init-declr->count): New function.
(decl->info): Support int foo[bar] = {baz,...}.
2017-07-30 08:27:05 +02:00
Jan Nieuwenhuizen
bd3ab85e98
mescc: Tinycc support: union.struct.
...
* module/language/c99/compiler.mes (decl->info): Support struct inside union.
* scaffold/tests/78-union-struct.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-07-29 22:50:00 +02:00
Jan Nieuwenhuizen
042022419e
mescc: Tinycc support: fix accu value after comparison.
...
* stage0/x86.M1 (setg___%al,, setge__%al, setl___%al, setle__%al): New
defines.
* module/mes/as-i386.mes (i386:g?->accu, i386:ge?->accu,
i386:l?->accu, i386:le?->accu, i386:jumpl, i386:jumple): New functions.
* module/mes/as-i386.scm: Export them.
* module/language/c99/compiler.mes (expr->accu): Use them to fix accu
value after comparisons.
(test-jump-label->info): Update comparison jumps.
2017-07-29 20:46:16 +02:00
Jan Nieuwenhuizen
f29479dfa2
mescc: Tinycc support: memcmp.
...
* mlibc/libc-mes+tcc.c (memcmp): Implement.
2017-07-29 11:09:00 +02:00
Jan Nieuwenhuizen
7d0d3a2221
mescc: Tinycc support: bugfix *++foo,*--foo.
...
* module/language/c99/compiler.mes (c99-input->full-ast): Pre-define NULL.
(expr->pointer, expr->size): Handle pre/post-inc/dec.
2017-07-29 10:45:16 +02:00
Jan Nieuwenhuizen
f1d9a7a42c
mescc: Tinycc support: uniquify strings per compilation unit.
...
* module/mes/M1.mes (object->M1): Add file-name to string id.
2017-07-29 09:08:44 +02:00
Jan Nieuwenhuizen
683d5bf1d2
mescc: Tinycc support: foo.bar = foo.baz = bla.
...
* module/language/c99/compiler.mes (expr->base*): New function.
(expr->accu): Use it to have value in accu for assignments.
* scaffold/tests/77-pointer-assign.c (test): Test it.
* stage0/x86.M1 (mov____%ecx,(%edx), mov___(%eax),%ecx): New define.
* module/mes/as-i386.mes (accu-mem->base->mem): New function.
(i386:byte-base->accu-mem+n):
(i386:byte-base->accu-mem):
(i386:base-mem->accu-mem):
(i386:base->accu-mem):
(i386:value->accu-mem+n):
(i386:value->accu-mem):
(i386:accu->base-mem+n):
(i386:byte-accu->base-mem):
(i386:accu->base-mem): Rename from accu-address, base-address.
Update callers.
* module/mes/as-i386.scm (mes): Update exports.
2017-07-28 22:45:32 +02:00
Jan Nieuwenhuizen
b6375aa016
mescc: Tinycc support: workaround for nyacc "\0" bug.
...
* module/language/c99/compiler.mes (fix-null): Replace "\nul" with "\0".
(initzer->data): Use it.
(expr->global): Use it.
2017-07-28 21:39:39 +02:00
Jan Nieuwenhuizen
03eadd6fa6
mescc: Tinycc support: bugfix foo % bar.
...
* stage0/x86.M1 (mov____%edx,%ebx): Typo
(idiv___%ebx): Replace div____%ebx.
* module/mes/as-i386.mes (i386:accu/base): Update.
(i386:accu%base): Update.
2017-07-28 20:36:21 +02:00
Jan Nieuwenhuizen
e102ef94ca
mescc: Tinycc support: fix foo[bar]->baz.
...
* module/language/c99/compiler.mes (expr->accu*): Lose one indirection.
* scaffold/tests/72-typedef-struct-def.c: Test it.
2017-07-29 08:37:34 +02:00
Jan Nieuwenhuizen
abd1272a31
mescc: Tinycc support: foo *bar[baz].
...
* module/language/c99/compiler.mes (decl->info): Support foo *bar[baz].
* module/language/c99/compiler.mes (push-global): Support push of -2,
-1. Change signature to take info. Update callers.
(push-global-address): Change signature to take info. Update callers.
2017-07-28 18:04:39 +02:00
Jan Nieuwenhuizen
73148c6f78
mescc: Tinycc support: bugfix foo[bar] = baz, with foo*[].
...
* module/language/c99/compiler.mes (expr->accu): Support size for more expressions.
(expr->pointer):
(expr->size): Support more expressions.
* scaffold/tests/77-pointer-assign.c (add0): Test it.
2017-07-28 18:00:46 +02:00
Jan Nieuwenhuizen
17e0e0cab7
mescc: Tinycc support: bugfix *foo = bar.
...
* module/language/c99/compiler.mes (base->ident-address): Typo, fixes (non-char*)*x = y.
* scaffold/tests/77-pointer-assign.c (test): Test it.
2017-07-28 15:45:22 +02:00
Jan Nieuwenhuizen
2e0c1c0aff
mescc: Tinycc support: bugfix *(cast)foo = bar.
...
* module/language/c99/compiler.mes (expr->accu): Thinko for de-ref assign.
* stage0/x86.M1: Fix typos.
* module/mes/as-i386.mes: Update for typos.
* scaffold/tests/77-pointer-assign.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-07-28 15:27:25 +02:00
Jan Nieuwenhuizen
c7547dfd52
mescc: Tinycc support: pointer arithmetic.
...
* module/language/c99/compiler.mes (ident->size, expr->size): New function.
(expr->accu): Use them for ++,--,add, sub.
(i386:type-alist): Set void size to 1.
* scaffold/tests/71-struct-array.c (test):
* scaffold/tests/76-pointer-arithmetic.c: Test it.
* make.scm (add-scaffold-test): Build it.
2017-07-28 10:40:30 +02:00
Jan Nieuwenhuizen
ce980c8239
mescc: Tinycc support: compile tcc with TCC_IS_NATIVE.
...
* mlibc/include/string.h (strcat): Declare.
* mlibc/libc-mes+tcc.c (dlclose, dlopen, mprotect, sigaction,
sigemptyset, strcat, vfprintf): Move from libc-gcc+tcc.c.
* mlibc/libc-gcc+tcc.c: Remove them.
* module/language/c99/compiler.mes (c99-input->full-ast): Define __i386__=1.
(i386:type-alist): Parse `long long int', `unsigned short int',
`unsigned long long int'.
(struct-field): Support void**.
(init-declr->name):
(init-declr->pointer): Support function declaration.
2017-07-28 08:07:41 +02:00
Jan Nieuwenhuizen
397d7a6c43
mlibc: Tinycc support: gcc -nostdinc -nostdlib.
...
* mlibc/libc-gcc+tcc.c: New file.
* mlibc/include/dlfcn.h:
* mlibc/include/errno.h:
* mlibc/include/signal.h:
* mlibc/include/sys/mman.h:
* mlibc/include/sys/time.h: Add tcc declarations.
2017-07-27 23:44:22 +02:00
Jan Nieuwenhuizen
ab74876131
mescc: Tinycc support: malloc,memcpy.
...
* mlibc/libc-mes.c (malloc): Rewrite.
* mlibc/libc-mes+tcc.c (memcpy): Implement.
2017-07-27 18:51:58 +02:00
Jan Nieuwenhuizen
ba78b78203
build: support libc-mes+tcc.
2017-07-27 18:41:45 +02:00
Jan Nieuwenhuizen
08ba0fce55
mescc: Tinycc support: memset.
...
* mlibc/libc-mes+tcc.c (memset): Implement.
2017-07-27 09:08:11 +02:00
Jan Nieuwenhuizen
28f056fdde
mescc: bump default maximum for M1-strings to 80.
...
* module/mes/M1.mes (object->M1): bump default maximum for M1-strings to 80.
2017-08-26 13:40:30 +02:00
Jan Nieuwenhuizen
913fd66e5b
mescc: Tinycc support: oops, use new realloc.
...
* mlibc/libc-mes.c (realloc): Disable naive realloc for libc-mes+tcc.c.
2017-07-27 00:13:39 +02:00
Jan Nieuwenhuizen
c52b16daf5
mescc: Bugfix: output M1-strings if possible.
...
* module/mes/M1.mes (object->M1): Typo. Also disallow \return in M1-strings.
2017-07-27 00:02:54 +02:00
Jan Nieuwenhuizen
908a4fab97
guix: Release update.
...
* guix.scm (mes): Update commit, hash and version.
2017-07-26 16:05:11 +02:00
Jan Nieuwenhuizen
06c4857c84
Release 0.9.
...
* configure (VERSION): Bump to 0.9.
2017-07-26 15:57:38 +02:00
Jan Nieuwenhuizen
e1e8f03735
doc: Release udpate.
...
* HACKING: Update.
* INSTALL: Update.
* NEWS: Update.
* README: Update.
* doc/ANNOUNCE-0.9: New file.
* make.scm: Install it.
* guix.scm (mescc-tools): Bump to 0.2.
2017-07-26 15:57:38 +02:00
Jan Nieuwenhuizen
4b1de28449
build: Install and installed-run fixes.
...
* guile/mescc.scm (%datadir,%docdir,%moduledir,%version): Remove.
* scripts/mescc.mes: Likewise.
* module/language/c99/compiler.mes: Likewise.
(%prefix): Prefer environment setting.
(c99-input->full-ast): Remove unnecessary includes.
Remove unnecessary defines.
* make.scm (%scm-files): Add mes/guile.scm.
(src/mes.gcc, src/mes.mlibc-gcc, src/mes.guile): Update MODULEDIR,
add -I src.
* src/mes.c (load_env): Use temporary variable for MODULEDIR concatenation.
(bload_env): Likewise.
2017-07-26 15:57:38 +02:00