scf.git
16 months agofix: arm64 for code below,
yu.dongliang [Thu, 29 Jun 2023 14:06:49 +0000 (22:06 +0800)]
fix: arm64 for code below,
bit xor(bit x, bit y)
{
return (x | y) & ~(x & y);
}

17 months agox64: re-open peephole optimizer
yu.dongliang [Fri, 23 Jun 2023 04:10:28 +0000 (12:10 +0800)]
x64: re-open peephole optimizer

17 months agox64: callee don't save no-used register, align to 16 bytes because libc needs
yu.dongliang [Thu, 22 Jun 2023 11:07:45 +0000 (19:07 +0800)]
x64: callee don't save no-used register, align to 16 bytes because libc needs

17 months agofix: x64 call argv register may be overlapped, sometimes like below:
yu.dongliang [Wed, 21 Jun 2023 17:11:31 +0000 (01:11 +0800)]
fix: x64 call argv register may be overlapped, sometimes like below:
int main()
{
int a[4] = {0, 1, 2, 3};
sort(a, 0, 3);
return 0;
}

17 months agofix: 3ac code for loop
yu.dongliang [Fri, 16 Jun 2023 07:19:43 +0000 (15:19 +0800)]
fix: 3ac code for loop

17 months agofix: core dump of 'while (i < 10); ' and 'for(i = 0; i < 1000; i++);'
yu.dongliang [Tue, 13 Jun 2023 10:43:13 +0000 (18:43 +0800)]
fix: core dump of 'while (i < 10); ' and 'for(i = 0; i < 1000; i++);'

17 months agofix:
yu.dongliang [Sat, 10 Jun 2023 08:53:56 +0000 (16:53 +0800)]
fix:
1, const local var print error,
2, break / continue in do while.

17 months agoadd ../examples/do_while.c
yu.dongliang [Thu, 8 Jun 2023 06:14:40 +0000 (14:14 +0800)]
add ../examples/do_while.c

17 months agosupport 'do {} while ()'
yu.dongliang [Thu, 8 Jun 2023 06:12:47 +0000 (14:12 +0800)]
support 'do {} while ()'

17 months agomove some code to ../lex/scf_lex_util.c
yu.dongliang [Sat, 27 May 2023 15:34:31 +0000 (23:34 +0800)]
move some code to ../lex/scf_lex_util.c

18 months agosupport arm32: printf() for double / float test ok.
yu.dongliang [Sat, 20 May 2023 15:49:04 +0000 (23:49 +0800)]
support arm32: printf() for double / float test ok.

18 months ago1, 64 bits add, sub, mul, .etc for arm32,
yu.dongliang [Fri, 19 May 2023 09:11:11 +0000 (17:11 +0800)]
1, 64 bits add, sub, mul, .etc for arm32,
2, use r12 for big disp when memory read / write, to decrease the complexity of register selection.

18 months agosupport arm32: 'qsort.c' of 'scf/examples' test ok
yu.dongliang [Mon, 15 May 2023 09:51:21 +0000 (17:51 +0800)]
support arm32: 'qsort.c' of 'scf/examples' test ok

18 months agosupport arm32: 'hanoi.c' and 'hello.c' of 'scf/examples' test ok
yu.dongliang [Sun, 14 May 2023 09:24:15 +0000 (17:24 +0800)]
support arm32: 'hanoi.c' and 'hello.c' of 'scf/examples' test ok

18 months agomake a framework for RISC register selection
yu.dongliang [Wed, 3 May 2023 07:21:57 +0000 (15:21 +0800)]
make a framework for RISC register selection

19 months agofix: pointer alias BUG
yu.dongliang [Sat, 22 Apr 2023 14:25:40 +0000 (22:25 +0800)]
fix: pointer alias BUG

19 months agoadd usage info
yu.dongliang [Wed, 19 Apr 2023 02:44:47 +0000 (10:44 +0800)]
add usage info

19 months agore-write README.md
yu.dongliang [Tue, 18 Apr 2023 16:36:51 +0000 (00:36 +0800)]
re-write README.md

19 months agoRevert "test"
yu.dongliang [Tue, 18 Apr 2023 16:19:42 +0000 (00:19 +0800)]
Revert "test"

This reverts commit df7a1fdbe60113b13b85cb7733c1b9e95715fa13.

19 months agotest
yu.dongliang [Tue, 18 Apr 2023 16:19:06 +0000 (00:19 +0800)]
test

19 months agofix linker can't find libc.so.6 in fedora, and update the main()'s argv parser
yu.dongliang [Tue, 18 Apr 2023 07:33:41 +0000 (15:33 +0800)]
fix linker can't find libc.so.6 in fedora, and update the main()'s argv parser

19 months agoRevert "tmp"
yu.dongliang [Mon, 3 Apr 2023 11:46:46 +0000 (19:46 +0800)]
Revert "tmp"

This reverts commit 6841f34fff82332aa92cf7bd09410b92dc99eb4f.

19 months agotmp
yu.dongliang [Mon, 3 Apr 2023 11:39:01 +0000 (19:39 +0800)]
tmp

19 months agoadd Naja float instructions
yu.dongliang [Fri, 31 Mar 2023 08:19:24 +0000 (16:19 +0800)]
add Naja float instructions

19 months ago1, add Naja Virtual Machine for naja bytecode,
yu.dongliang [Tue, 28 Mar 2023 12:51:46 +0000 (20:51 +0800)]
1, add Naja Virtual Machine for naja bytecode,
2, lexer: support "\033" in string, so printf() can print with color.

20 months ago1, make a framework for risc native code generation,
yu.dongliang [Sat, 25 Mar 2023 09:39:18 +0000 (17:39 +0800)]
1, make a framework for risc native code generation,
2, add a bytecode generation named 'naja' for script language,
3, move some similar code to scf_elf_native.c in dir elf/ .

20 months agofix: crash in const_teq optimizer when the code like this 'while (1);'
yu.dongliang [Fri, 24 Mar 2023 04:41:44 +0000 (12:41 +0800)]
fix: crash in const_teq optimizer when the code like this 'while (1);'

20 months agoadd ../examples/print.c
yu.dongliang [Wed, 22 Mar 2023 13:17:14 +0000 (21:17 +0800)]
add ../examples/print.c

20 months agomake a framework for RISC instructions in native module
yu.dongliang [Wed, 22 Mar 2023 13:16:50 +0000 (21:16 +0800)]
make a framework for RISC instructions in native module

20 months agoupdate README.md.
底层技术栈 [Sat, 11 Mar 2023 07:24:45 +0000 (07:24 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <18588496441@163.com>
20 months agoupdate README.md.
底层技术栈 [Sat, 11 Mar 2023 07:20:03 +0000 (07:20 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <18588496441@163.com>
20 months agoupdate README.md.
底层技术栈 [Sat, 11 Mar 2023 07:19:16 +0000 (07:19 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <18588496441@163.com>
20 months agosupport ARM64: float / double args for function call
yu.dongliang [Thu, 2 Mar 2023 06:47:54 +0000 (14:47 +0800)]
support ARM64: float / double args for function call

20 months agosupport ARM64: float / double instructions
yu.dongliang [Wed, 1 Mar 2023 12:26:56 +0000 (20:26 +0800)]
support ARM64: float / double instructions

20 months agosupport arm64: 'qsort' test ok in ../examples/qsort.c
yu.dongliang [Sat, 25 Feb 2023 05:03:58 +0000 (13:03 +0800)]
support arm64: 'qsort' test ok in ../examples/qsort.c

21 months agosupport arm64: 'hanoi' test ok, ../examples/hanoi.c
yu.dongliang [Tue, 21 Feb 2023 11:10:23 +0000 (19:10 +0800)]
support arm64: 'hanoi' test ok, ../examples/hanoi.c

21 months agosupport arm64: 'hello world' test ok, ../examples/hello.c
yu.dongliang [Sat, 18 Feb 2023 05:26:16 +0000 (13:26 +0800)]
support arm64: 'hello world' test ok, ../examples/hello.c

21 months agofix issue #I6E9GC: return error when use 4 values in multi-return-values function.
yu.dongliang [Fri, 10 Feb 2023 08:00:25 +0000 (16:00 +0800)]
fix issue #I6E9GC: return error when use 4 values in multi-return-values function.

21 months agoadd ../examples/multi_retvals.c
yu.dongliang [Fri, 10 Feb 2023 04:08:09 +0000 (12:08 +0800)]
add ../examples/multi_retvals.c

21 months agofix issue #I6E6LZ: scf crash when analysize multi-return-values function.
yu.dongliang [Fri, 10 Feb 2023 04:01:59 +0000 (12:01 +0800)]
fix issue #I6E6LZ: scf crash when analysize multi-return-values function.

22 months agoadd ../examples/hanoi.c
yu.dongliang [Wed, 11 Jan 2023 11:37:48 +0000 (19:37 +0800)]
add ../examples/hanoi.c

22 months agofix issue '#I685FL': use interpreter '/lib64/ld-linux-x86-64.so.2'
yu.dongliang [Sat, 31 Dec 2022 16:16:50 +0000 (00:16 +0800)]
fix issue '#I685FL': use interpreter '/lib64/ld-linux-x86-64.so.2'

23 months agofix: debug info error of class member function
yu.dongliang [Tue, 13 Dec 2022 09:54:57 +0000 (17:54 +0800)]
fix: debug info error of class member function

23 months ago1, delete some unused code,
yu.dongliang [Tue, 13 Dec 2022 06:46:34 +0000 (14:46 +0800)]
1, delete some unused code,
2, print usage when start scf,
3, mov test code to dir examples.

2 years agotest email
yu.dongliang [Sat, 5 Nov 2022 07:50:11 +0000 (15:50 +0800)]
test email

2 years agoDAG optimize basic block for pointer dereference
yu.dongliang [Thu, 20 Oct 2022 09:59:07 +0000 (17:59 +0800)]
DAG optimize basic block for pointer dereference

2 years agofix: core dump when '(*p)++'
yu.dongliang [Thu, 20 Oct 2022 08:20:41 +0000 (16:20 +0800)]
fix: core dump when '(*p)++'

2 years agoupdate README.md.
底层技术栈 [Wed, 19 Oct 2022 10:26:45 +0000 (10:26 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <maja_creater@qq.com>
2 years agoupdate README.md.
底层技术栈 [Wed, 19 Oct 2022 10:26:12 +0000 (10:26 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <maja_creater@qq.com>
2 years agooptimize: pointer dereference when the variable pointed can be identified,
yu.dongliang [Wed, 19 Oct 2022 09:45:25 +0000 (17:45 +0800)]
optimize: pointer dereference when the variable pointed can be identified,
such as:
int   a = 1;
int*  p = &a;
int** pp = &p;

**pp += 2; // this will be instead of 'a += 2', and 'p = &a; pp = &p' will be deleted.

2 years agofix & optimize: pointer dereference in if condition
yu.dongliang [Tue, 18 Oct 2022 15:03:47 +0000 (23:03 +0800)]
fix & optimize: pointer dereference in if condition

2 years agofix & optimize: dereference & assign in if condition, such as:
yu.dongliang [Tue, 18 Oct 2022 10:22:57 +0000 (18:22 +0800)]
fix & optimize: dereference & assign in if condition, such as:
if (*p = i > 0 && j > 1 && k > 2)
return -1;
return 0;

2 years agofix: BUG when && or || result needs to save,
yu.dongliang [Sun, 16 Oct 2022 08:11:11 +0000 (16:11 +0800)]
fix: BUG when && or || result needs to save,
such as: res = i > 1 && j > 2 || k > 3;
not: if (i > 1 && j > 2 || k > 3)

2 years agoupdate README.md.
底层技术栈 [Sat, 15 Oct 2022 08:38:05 +0000 (08:38 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <maja_creater@qq.com>
2 years agoupdate README.md.
底层技术栈 [Sat, 15 Oct 2022 08:34:43 +0000 (08:34 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <maja_creater@qq.com>
2 years agoupdate README.md.
底层技术栈 [Sat, 15 Oct 2022 08:06:52 +0000 (08:06 +0000)]
update README.md.

Signed-off-by: 底层技术栈 <maja_creater@qq.com>
2 years agorename executable file name to scf
yu.dongliang [Sat, 15 Oct 2022 07:56:03 +0000 (15:56 +0800)]
rename executable file name to scf

2 years ago1, rename scf_parse_test.c to main.c,
yu.dongliang [Sat, 15 Oct 2022 07:21:59 +0000 (15:21 +0800)]
1, rename scf_parse_test.c to main.c,
2, optimize 3ac code for && and ||

2 years ago1, it is a clone of github for Simple Compiler Framework,
yu.dongliang [Tue, 5 Jul 2022 09:34:29 +0000 (17:34 +0800)]
1, it is a clone of github for Simple Compiler Framework,
2, please goto there to see details of git-logs,
3, I don't know how to push code with git-logs here, so copy the code only.

4, If issues, please ask me to 头条:底层技术栈,或百家号:闲聊代码,or here email.

2 years agoInitial commit
底层技术栈 [Tue, 5 Jul 2022 09:18:44 +0000 (09:18 +0000)]
Initial commit