Created
January 29, 2024 00:40
-
-
Save lupyuen/3e650bd6ad72b2e8ee8596858bc94f36 to your computer and use it in GitHub Desktop.
TCC in WebAssembly. See https://github.com/lupyuen/tcc-riscv32-wasm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| + node zig/test.js | |
| compile_program: start | |
| compile_program: options=["-c","hello.c"] | |
| compile_program: code= | |
| int main(int argc, char *argv[]) { | |
| printf("Hello, World!!\n"); | |
| return 0; | |
| } | |
| compile_program: options[0]=-c | |
| compile_program: options[1]=hello.c | |
| open: path=hello.c, oflag=0, return fd=3 | |
| sem_init: sem=tcc-wasm.sem_t@10cfe8, pshared=0, value=1 | |
| sem_wait: sem=tcc-wasm.sem_t@10cfe8 | |
| TODO: setjmp | |
| TODO: sscanf: str=0.9.27, format=%d.%d.%d | |
| format_string1: size=128, format=#define __TINYC__ %d | |
| , a=1991381505 | |
| vsnprintf: return str=#define __TINYC__ 1991381505 | |
| format_string2: size=99, format=#define %s%s | |
| , a0=__riscv, a1= 1 | |
| vsnprintf: return str=#define __riscv 1 | |
| format_string2: size=81, format=#define %s%s | |
| , a0=__riscv_xlen 64, a1= | |
| vsnprintf: return str=#define __riscv_xlen 64 | |
| format_string2: size=185, format=#define %s%s | |
| , a0=__riscv_flen 64, a1= | |
| vsnprintf: return str=#define __riscv_flen 64 | |
| format_string2: size=161, format=#define %s%s | |
| , a0=__riscv_div, a1= 1 | |
| vsnprintf: return str=#define __riscv_div 1 | |
| format_string2: size=139, format=#define %s%s | |
| , a0=__riscv_mul, a1= 1 | |
| vsnprintf: return str=#define __riscv_mul 1 | |
| format_string2: size=117, format=#define %s%s | |
| , a0=__riscv_fdiv, a1= 1 | |
| vsnprintf: return str=#define __riscv_fdiv 1 | |
| format_string2: size=94, format=#define %s%s | |
| , a0=__riscv_fsqrt, a1= 1 | |
| vsnprintf: return str=#define __riscv_fsqrt 1 | |
| format_string2: size=326, format=#define %s%s | |
| , a0=__riscv_float_abi_double, a1= 1 | |
| vsnprintf: return str=#define __riscv_float_abi_double 1 | |
| format_string2: size=291, format=#define %s%s | |
| , a0=__linux__, a1= 1 | |
| vsnprintf: return str=#define __linux__ 1 | |
| format_string2: size=271, format=#define %s%s | |
| , a0=__linux, a1= 1 | |
| vsnprintf: return str=#define __linux 1 | |
| format_string2: size=253, format=#define %s%s | |
| , a0=__unix__, a1= 1 | |
| vsnprintf: return str=#define __unix__ 1 | |
| format_string2: size=234, format=#define %s%s | |
| , a0=__unix, a1= 1 | |
| vsnprintf: return str=#define __unix 1 | |
| format_string2: size=217, format=#define %s%s | |
| , a0=__CHAR_UNSIGNED__, a1= 1 | |
| vsnprintf: return str=#define __CHAR_UNSIGNED__ 1 | |
| format_string1: size=189, format=#define __SIZEOF_POINTER__ %d | |
| , a=8 | |
| vsnprintf: return str=#define __SIZEOF_POINTER__ 8 | |
| format_string1: size=160, format=#define __SIZEOF_LONG__ %d | |
| , a=8 | |
| vsnprintf: return str=#define __SIZEOF_LONG__ 8 | |
| format_string2: size=134, format=#define %s%s | |
| , a0=__STDC__, a1= 1 | |
| vsnprintf: return str=#define __STDC__ 1 | |
| format_string1: size=115, format=#define __STDC_VERSION__ %dL | |
| , a=199901 | |
| vsnprintf: return str=#define __STDC_VERSION__ 199901L | |
| format_string1: size=356, format=#define __BASE_FILE__ "%s" | |
| , a=hello.c | |
| vsnprintf: return str=#define __BASE_FILE__ "hello.c" | |
| read: fd=3, nbyte=8192 | |
| read: return buf= | |
| int main(int argc, char *argv[]) { | |
| printf("Hello, World!!\n"); | |
| return 0; | |
| } | |
| format_string2: size=128, format=%s:%d: , a0=hello.c, a1=3 | |
| vsnprintf: return str=hello.c:3: | |
| format_string0: size=117, format=warning: | |
| vsnprintf: return str=warning: | |
| format_string1: size=108, format=implicit declaration of function '%s', a=printf | |
| vsnprintf: return str=implicit declaration of function 'printf' | |
| format_string1: size=0, format=%s | |
| , a=hello.c:3: warning: implicit declaration of function 'printf' | |
| fprintf: stream=tcc-wasm.FILE@2 | |
| hello.c:3: warning: implicit declaration of function 'printf' | |
| format_string1: size=0, format=L.%u, a=0 | |
| sprintf: return str=L.0 | |
| format_string1: size=256, format=.rela%s, a=.text | |
| snprintf: return str=.rela.text | |
| read: fd=3, nbyte=8192 | |
| read: return buf= | |
| close: fd=3 | |
| sem_post: sem=tcc-wasm.sem_t@10cfe8 | |
| format_string1: size=1024, format=%s, a=hello.c | |
| snprintf: return str=hello.c | |
| unlink: path=hello.o | |
| open: path=hello.o, oflag=577, return fd=4 | |
| fdopen: fd=4, mode=wb, return FILE=5 | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............ | |
| 0016: 01 00 F3 00 01 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0032: 00 00 00 00 00 00 00 00 D0 01 00 00 00 00 00 00 ................ | |
| 0048: 04 00 00 00 40 00 00 00 00 00 40 00 09 00 08 00 ....@.....@..... | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 13 01 01 FE 23 3C 11 00 23 38 81 00 13 04 01 02 ....#<..#8...... | |
| 0016: 13 00 00 00 23 34 A4 FE 23 30 B4 FE 17 05 00 00 ....#4..#0...... | |
| 0032: 13 05 05 00 97 00 00 00 E7 80 00 00 1B 05 00 00 ................ | |
| 0048: 83 30 81 01 03 34 01 01 13 01 01 02 67 80 00 00 .0...4......g... | |
| fwrite: size=1, nmemb=16, stream=tcc-wasm.FILE@5 | |
| 0000: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 21 0A 00 Hello, World!!.. | |
| fwrite: size=1, nmemb=144, stream=tcc-wasm.FILE@5 | |
| 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 01 00 00 00 04 00 F1 FF ................ | |
| 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 0E 00 00 00 01 00 03 00 00 00 00 00 00 00 00 00 ................ | |
| 0064: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................ | |
| 0080: 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0096: 09 00 00 00 12 00 01 00 00 00 00 00 00 00 00 00 ................ | |
| 0112: 40 00 00 00 00 00 00 00 12 00 00 00 12 00 00 00 @............... | |
| 0128: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=25, stream=tcc-wasm.FILE@5 | |
| 0000: 00 68 65 6C 6C 6F 2E 63 00 6D 61 69 6E 00 4C 2E .hello.c.main.L. | |
| 0016: 30 00 70 72 69 6E 74 66 00 0.printf. | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fwrite: size=1, nmemb=72, stream=tcc-wasm.FILE@5 | |
| 0000: 1C 00 00 00 00 00 00 00 17 00 00 00 02 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... | |
| 0032: 18 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 24 00 00 00 00 00 00 00 13 00 00 00 05 00 00 00 $............... | |
| 0064: 00 00 00 00 00 00 00 00 ........ | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fputc: c=0x00, stream=tcc-wasm.FILE@5 | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 00 2E 74 65 78 74 00 2E 64 61 74 61 00 2E 64 61 ..text..data..da | |
| 0016: 74 61 2E 72 6F 00 2E 62 73 73 00 2E 73 79 6D 74 ta.ro..bss..symt | |
| 0032: 61 62 00 2E 73 74 72 74 61 62 00 2E 72 65 6C 61 ab..strtab..rela | |
| 0048: 2E 74 65 78 74 00 2E 73 68 73 74 72 74 61 62 00 .text..shstrtab. | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 01 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... | |
| 0032: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... | |
| 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 07 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ | |
| 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 0D 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ | |
| 0032: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 16 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 ................ | |
| 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 1B 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0016: 00 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 ................ | |
| 0032: 90 00 00 00 00 00 00 00 06 00 00 00 04 00 00 00 ................ | |
| 0048: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 23 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 #............... | |
| 0016: 00 00 00 00 00 00 00 00 20 01 00 00 00 00 00 00 ........ ....... | |
| 0032: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0048: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 2B 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 +............... | |
| 0016: 00 00 00 00 00 00 00 00 40 01 00 00 00 00 00 00 ........@....... | |
| 0032: 48 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 H............... | |
| 0048: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................ | |
| fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@5 | |
| 0000: 36 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 6............... | |
| 0016: 00 00 00 00 00 00 00 00 90 01 00 00 00 00 00 00 ................ | |
| 0032: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... | |
| 0048: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| close: stream=tcc-wasm.FILE@5 | |
| a.out: 1040 bytes | |
| 0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............ | |
| 0016: 01 00 F3 00 01 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0032: 00 00 00 00 00 00 00 00 D0 01 00 00 00 00 00 00 ................ | |
| 0048: 04 00 00 00 40 00 00 00 00 00 40 00 09 00 08 00 ....@.....@..... | |
| 0064: 13 01 01 FE 23 3C 11 00 23 38 81 00 13 04 01 02 ....#<..#8...... | |
| 0080: 13 00 00 00 23 34 A4 FE 23 30 B4 FE 17 05 00 00 ....#4..#0...... | |
| 0096: 13 05 05 00 97 00 00 00 E7 80 00 00 1B 05 00 00 ................ | |
| 0112: 83 30 81 01 03 34 01 01 13 01 01 02 67 80 00 00 .0...4......g... | |
| 0128: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 21 0A 00 Hello, World!!.. | |
| 0144: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0160: 00 00 00 00 00 00 00 00 01 00 00 00 04 00 F1 FF ................ | |
| 0176: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0192: 0E 00 00 00 01 00 03 00 00 00 00 00 00 00 00 00 ................ | |
| 0208: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................ | |
| 0224: 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0240: 09 00 00 00 12 00 01 00 00 00 00 00 00 00 00 00 ................ | |
| 0256: 40 00 00 00 00 00 00 00 12 00 00 00 12 00 00 00 @............... | |
| 0272: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0288: 00 68 65 6C 6C 6F 2E 63 00 6D 61 69 6E 00 4C 2E .hello.c.main.L. | |
| 0304: 30 00 70 72 69 6E 74 66 00 00 00 00 00 00 00 00 0.printf........ | |
| 0320: 1C 00 00 00 00 00 00 00 17 00 00 00 02 00 00 00 ................ | |
| 0336: 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ ....... | |
| 0352: 18 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0368: 24 00 00 00 00 00 00 00 13 00 00 00 05 00 00 00 $............... | |
| 0384: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0400: 00 2E 74 65 78 74 00 2E 64 61 74 61 00 2E 64 61 ..text..data..da | |
| 0416: 74 61 2E 72 6F 00 2E 62 73 73 00 2E 73 79 6D 74 ta.ro..bss..symt | |
| 0432: 61 62 00 2E 73 74 72 74 61 62 00 2E 72 65 6C 61 ab..strtab..rela | |
| 0448: 2E 74 65 78 74 00 2E 73 68 73 74 72 74 61 62 00 .text..shstrtab. | |
| 0464: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0496: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0512: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0528: 01 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 ................ | |
| 0544: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@....... | |
| 0560: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... | |
| 0576: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0592: 07 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0608: 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ | |
| 0624: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0640: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0656: 0D 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0672: 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 ................ | |
| 0688: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0704: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0720: 16 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 ................ | |
| 0736: 00 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 ................ | |
| 0752: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0768: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0784: 1B 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0800: 00 00 00 00 00 00 00 00 90 00 00 00 00 00 00 00 ................ | |
| 0816: 90 00 00 00 00 00 00 00 06 00 00 00 04 00 00 00 ................ | |
| 0832: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................ | |
| 0848: 23 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 #............... | |
| 0864: 00 00 00 00 00 00 00 00 20 01 00 00 00 00 00 00 ........ ....... | |
| 0880: 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0896: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| 0912: 2B 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 +............... | |
| 0928: 00 00 00 00 00 00 00 00 40 01 00 00 00 00 00 00 ........@....... | |
| 0944: 48 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 H............... | |
| 0960: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................ | |
| 0976: 36 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 6............... | |
| 0992: 00 00 00 00 00 00 00 00 90 01 00 00 00 00 00 00 ................ | |
| 1008: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @............... | |
| 1024: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | |
| ret=18219008 | |
| + node zig/test.js | |
| + grep TODO | |
| TODO: setjmp | |
| TODO: sscanf: str=0.9.27, format=%d.%d.%d |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment