Skip to content

Instantly share code, notes, and snippets.

@lupyuen
Created February 8, 2024 10:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lupyuen/748e6d36ce21f7db76cb963eee099d9e to your computer and use it in GitHub Desktop.
Save lupyuen/748e6d36ce21f7db76cb963eee099d9e to your computer and use it in GitHub Desktop.
TCC WebAssembly Web Browser Log. See https://github.com/lupyuen/tcc-riscv32-wasm
tcc.js:204 Fetching romfs.bin...
tcc.js:207 ROM FS Size: 4096
tcc.js:54 main: start
tcc.js:46 compile_program: start
tcc.js:46 compile_program: Mounting ROM FS...
tcc.js:46 romfs_bind: Entry
tcc.js:46 compile_program: ROM FS mounted OK
tcc.js:46 compile_program: Opening ROM FS File `stdio.h`...
tcc.js:46 romfs_open: Open 'stdio.h'
tcc.js:46 compile_program: ROM FS File `stdio.h` opened OK!
tcc.js:46 compile_program: Reading ROM FS File `stdio.h`...
tcc.js:46 romfs_read: Read 4 bytes from offset 0
tcc.js:46 romfs_read: Read sector 17969028
tcc.js:46 romfs_filecacheread: sector: 2 cached: 0 ncached: 1 sectorsize: 64 XIP base: anyopaque@1122f74 buffer: anyopaque@1122f74
tcc.js:46 romfs_filecacheread: XIP buffer: anyopaque@1122ff4
tcc.js:46 romfs_read: Return 4 bytes from sector offset 0
tcc.js:46 compile_program: ROM FS File `stdio.h` read OK!
tcc.js:46 0000: 2F 2F 20 43 // C
tcc.js:46
tcc.js:46 compile_program: Closing ROM FS File `stdio.h`...
tcc.js:46 romfs_close: Closing
tcc.js:46 compile_program: ROM FS File `stdio.h` closed OK!
tcc.js:46 compile_program: options=["-c","hello.c"]
tcc.js:46 compile_program: code=#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[]) {
puts("Hello, World!!\n");
exit(0);
}
tcc.js:46 compile_program: options[0]=-c
tcc.js:46 compile_program: options[1]=hello.c
tcc.js:46 open: path=hello.c, oflag=0, return fd=3
tcc.js:46 sem_init: sem=tcc-wasm.sem_t@10d710, pshared=0, value=1
tcc.js:46 sem_wait: sem=tcc-wasm.sem_t@10d710
tcc.js:46 TODO: setjmp
tcc.js:46 TODO: sscanf: str=0.9.27, format=%d.%d.%d
tcc.js:46 read: fd=3, nbyte=8192
tcc.js:46 read: return buf=
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[]) {
puts("Hello, World!!\n");
exit(0);
}
tcc.js:46 open: path=/usr/local/lib/tcc/include/stdio.h, oflag=0, return fd=4
tcc.js:46 romfs_open: Open 'stdio.h'
tcc.js:46 read: fd=4, nbyte=8192
tcc.js:46 romfs_read: Read 8192 bytes from offset 0
tcc.js:46 romfs_read: Read 38 sectors starting with 2
tcc.js:46 romfs_read: Read sector 0
tcc.js:46 romfs_filecacheread: sector: 40 cached: 0 ncached: 1 sectorsize: 64 XIP base: anyopaque@1122f74 buffer: anyopaque@1122f74
tcc.js:46 romfs_filecacheread: XIP buffer: anyopaque@1123974
tcc.js:46 romfs_read: Return 55 bytes from sector offset 0
tcc.js:46 read: return buf=
// Caution: This may change
#define SYS_write 61
// TODO: Move this to a common file
typedef int size_t;
typedef int ssize_t;
typedef int uintptr_t;
// Return the string length
inline size_t strlen(const char *s) {
size_t len = 0;
while (*s != 0) {
s++;
len++;
}
return len;
}
// Print the string to Standard Output
inline int puts(const char *s) {
return
write(1, s, strlen(s)) +
write(1, "\n", 1);
}
// Write to the File Descriptor
// https://lupyuen.github.io/articles/app#nuttx-app-calls-nuttx-kernel
inline ssize_t write(int parm1, const void * parm2, size_t parm3) {
return (ssize_t) sys_call3(
(unsigned int) SYS_write, // System Call Number
(uintptr_t) parm1, // File Descriptor (1 = Standard Output)
(uintptr_t) parm2, // Buffer to be written
(uintptr_t) parm3 // Number of bytes to write
);
}
// Make a System Call with 3 parameters
// https://github.com/apache/nuttx/blob/master/arch/risc-v/include/syscall.h#L240-L268
inline uintptr_t sys_call3(
unsigned int nbr, // System Call Number
uintptr_t parm1, // First Parameter
uintptr_t parm2, // Second Parameter
uintptr_t parm3 // Third Parameter
) {
// Pass the Function Number and Parameters in
// Registers A0 to A3
register long r3 asm("a0") = (long)(parm3); // Will move to A3
asm volatile ("slli a3, a0, 32"); // Shift 32 bits Left then Right
asm volatile ("srli a3, a3, 32"); // To clear the top 32 bits
register long r2 asm("a0") = (long)(parm2); // Will move to A2
asm volatile ("slli a2, a0, 32"); // Shift 32 bits Left then Right
asm volatile ("srli a2, a2, 32"); // To clear the top 32 bits
register long r1 asm("a0") = (long)(parm1); // Will move to A1
asm volatile ("slli a1, a0, 32"); // Shift 32 bits Left then Right
asm volatile ("srli a1, a1, 32"); // To clear the top 32 bits
register long r0 asm("a0") = (long)(nbr); // Will stay in A0
// `ecall` will jump from RISC-V User Mode
// to RISC-V Supervisor Mode
// to execute the System Call.
// Input + Output Registers: A0 to A3
// Clobbers the Memory
asm volatile
(
// ECALL for System Call to NuttX Kernel
"ecall \n"
// NuttX needs NOP after ECALL
".word 0x0001 \n"
// Input+Output Registers: None
// Input-Only Registers: A0 to A3
// Clobbers the Memory
:
: "r"(r0), "r"(r1), "r"(r2), "r"(r3)
: "memory"
);
// Return the result from Register A0
return r0;
}
tcc.js:46 read: fd=4, nbyte=8192
tcc.js:46 romfs_read: Read 8192 bytes from offset 2487
tcc.js:46 read: return buf=
tcc.js:46 close: fd=4
tcc.js:46 romfs_close: Closing
tcc.js:46 open: path=/usr/local/lib/tcc/include/stdlib.h, oflag=0, return fd=5
tcc.js:46 romfs_open: Open 'stdlib.h'
tcc.js:46 read: fd=5, nbyte=8192
tcc.js:46 romfs_read: Read 8192 bytes from offset 0
tcc.js:46 romfs_read: Read sector 0
tcc.js:46 romfs_filecacheread: sector: 41 cached: 0 ncached: 1 sectorsize: 64 XIP base: anyopaque@1122f74 buffer: anyopaque@1122f74
tcc.js:46 romfs_filecacheread: XIP buffer: anyopaque@11239b4
tcc.js:46 romfs_read: Return 32 bytes from sector offset 32
tcc.js:46 romfs_read: Read 20 sectors starting with 42
tcc.js:46 romfs_read: Read sector 0
tcc.js:46 romfs_filecacheread: sector: 62 cached: 41 ncached: 1 sectorsize: 64 XIP base: anyopaque@1122f74 buffer: anyopaque@11239b4
tcc.js:46 romfs_filecacheread: XIP buffer: anyopaque@1123ef4
tcc.js:46 romfs_read: Return 14 bytes from sector offset 0
tcc.js:46 read: return buf=
// Caution: This may change
#define SYS__exit 8
// Terminate the NuttX Process
// From nuttx/syscall/proxies/PROXY__exit.c
inline void exit(int parm1) {
sys_call1((unsigned int)SYS__exit, (uintptr_t)parm1);
while(1);
}
// Make a System Call with 1 parameters
// https://github.com/apache/nuttx/blob/master/arch/risc-v/include/syscall.h#L188-L213
inline uintptr_t sys_call1(
unsigned int nbr, // System Call Number
uintptr_t parm1 // First Parameter
) {
// Pass the Function Number and Parameters
// Registers A0 to A1
register long r1 asm("a0") = (long)(parm1); // Will move to A1
asm volatile ("slli a1, a0, 32"); // Shift 32 bits Left then Right
asm volatile ("srli a1, a1, 32"); // To clear the top 32 bits
register long r0 asm("a0") = (long)(nbr); // Will stay in A0
// `ecall` will jump from RISC-V User Mode
// to RISC-V Supervisor Mode
// to execute the System Call.
// Input + Output Registers: A0 to A1
// Clobbers the Memory
asm volatile
(
// ECALL for System Call to NuttX Kernel
"ecall \n"
// NuttX needs NOP after ECALL
".word 0x0001 \n"
// Input+Output Registers: None
// Input-Only Registers: A0 to A1
// Clobbers the Memory
:
: "r"(r0), "r"(r1)
: "memory"
);
// Return the result from Register A0
return r0;
}
tcc.js:46 read: fd=5, nbyte=8192
tcc.js:46 romfs_read: Read 8192 bytes from offset 1326
tcc.js:46 read: return buf=
tcc.js:46 close: fd=5
tcc.js:46 romfs_close: Closing
tcc.js:46 read: fd=3, nbyte=8192
tcc.js:46 read: return buf=
tcc.js:46 close: fd=3
tcc.js:46 sem_post: sem=tcc-wasm.sem_t@10d710
tcc.js:46 unlink: path=hello.o
tcc.js:46 open: path=hello.o, oflag=577, return fd=6
tcc.js:46 fdopen: fd=6, mode=wb, return FILE=7
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............
tcc.js:46 0016: 01 00 F3 00 01 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 C0 05 00 00 00 00 00 00 ................
tcc.js:46 0048: 04 00 00 00 40 00 00 00 00 00 40 00 09 00 08 00 ....@.....@.....
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=628, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 13 01 01 FE 23 3C 11 00 23 38 81 00 13 04 01 02 ....#<..#8......
tcc.js:46 0016: 13 00 00 00 23 34 A4 FE 23 30 B4 FE 17 05 00 00 ....#4..#0......
tcc.js:46 0032: 13 05 05 00 97 00 00 00 E7 80 00 00 1B 05 00 00 ................
tcc.js:46 0048: 97 00 00 00 E7 80 00 00 83 30 81 01 03 34 01 01 .........0...4..
tcc.js:46 0064: 13 01 01 02 67 80 00 00 13 01 01 FE 23 3C 11 00 ....g.......#<..
tcc.js:46 0080: 23 38 81 00 13 04 01 02 13 00 00 00 23 34 A4 FE #8..........#4..
tcc.js:46 0096: 03 35 84 FE 97 00 00 00 E7 80 00 00 13 06 05 00 .5..............
tcc.js:46 0112: 83 35 84 FE 1B 05 10 00 97 00 00 00 E7 80 00 00 .5..............
tcc.js:46 0128: 1B 06 10 00 97 05 00 00 93 85 05 00 23 22 A4 FE ............#"..
tcc.js:46 0144: 1B 05 10 00 97 00 00 00 E7 80 00 00 83 25 44 FE .............%D.
tcc.js:46 0160: 3B 85 A5 00 83 30 81 01 03 34 01 01 13 01 01 02 ;....0...4......
tcc.js:46 0176: 67 80 00 00 13 01 01 FD 23 34 11 02 23 30 81 02 g.......#4..#0..
tcc.js:46 0192: 13 04 01 03 13 00 00 00 23 34 A4 FE 23 30 B4 FE ........#4..#0..
tcc.js:46 0208: 23 3C C4 FC 83 26 84 FD 03 26 04 FE 83 25 84 FE #<...&...&...%..
tcc.js:46 0224: 1B 05 D0 03 97 00 00 00 E7 80 00 00 83 30 81 02 .............0..
tcc.js:46 0240: 03 34 01 02 13 01 01 03 67 80 00 00 13 01 01 FB .4......g.......
tcc.js:46 0256: 23 34 11 04 23 30 81 04 13 04 01 05 13 00 00 00 #4..#0..........
tcc.js:46 0272: 23 34 A4 FE 23 30 B4 FE 23 3C C4 FC 23 38 D4 FC #4..#0..#<..#8..
tcc.js:46 0288: 03 25 04 FD 23 34 A4 FC 93 16 05 02 93 D6 06 02 .%..#4..........
tcc.js:46 0304: 03 25 84 FD 23 30 A4 FC 13 16 05 02 13 56 06 02 .%..#0.......V..
tcc.js:46 0320: 03 25 04 FE 23 3C A4 FA 93 15 05 02 93 D5 05 02 .%..#<..........
tcc.js:46 0336: 03 25 84 FE 13 15 05 02 13 55 05 02 23 38 A4 FA .%.......U..#8..
tcc.js:46 0352: 73 00 00 00 01 00 03 25 04 FB 83 30 81 04 03 34 s......%...0...4
tcc.js:46 0368: 01 04 13 01 01 05 67 80 00 00 13 01 01 FE 23 3C ......g.......#<
tcc.js:46 0384: 11 00 23 38 81 00 13 04 01 02 13 00 00 00 23 34 ..#8..........#4
tcc.js:46 0400: A4 FE 83 25 84 FE 1B 05 80 00 97 00 00 00 E7 80 ...%............
tcc.js:46 0416: 00 00 6F 00 00 00 83 30 81 01 03 34 01 01 13 01 ..o....0...4....
tcc.js:46 0432: 01 02 67 80 00 00 13 01 01 FD 23 34 11 02 23 30 ..g.......#4..#0
tcc.js:46 0448: 81 02 13 04 01 03 13 00 00 00 23 34 A4 FE 23 30 ..........#4..#0
tcc.js:46 0464: B4 FE 03 25 04 FE 23 3C A4 FC 93 15 05 02 93 D5 ...%..#<........
tcc.js:46 0480: 05 02 03 25 84 FE 13 15 05 02 13 55 05 02 23 38 ...%.......U..#8
tcc.js:46 0496: A4 FC 73 00 00 00 01 00 03 25 04 FD 83 30 81 02 ..s......%...0..
tcc.js:46 0512: 03 34 01 02 13 01 01 03 67 80 00 00 13 01 01 FE .4......g.......
tcc.js:46 0528: 23 3C 11 00 23 38 81 00 13 04 01 02 13 00 00 00 #<..#8..........
tcc.js:46 0544: 23 34 A4 FE 1B 05 00 00 23 22 A4 FE 03 35 84 FE #4......#"...5..
tcc.js:46 0560: 83 45 05 00 63 94 05 00 6F 00 80 02 03 35 84 FE .E..c...o....5..
tcc.js:46 0576: 93 05 05 00 13 05 15 00 23 34 A4 FE 03 25 44 FE ........#4...%D.
tcc.js:46 0592: 93 05 05 00 1B 05 15 00 23 22 A4 FE 6F F0 1F FD ........#"..o...
tcc.js:46 0608: 03 25 44 FE 83 30 81 01 03 34 01 01 13 01 01 02 .%D..0...4......
tcc.js:46 0624: 67 80 00 00 g...
tcc.js:46
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fwrite: size=1, nmemb=18, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 21 0A 00 Hello, World!!..
tcc.js:46 0016: 0A 00 ..
tcc.js:46
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fwrite: size=1, nmemb=312, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 01 00 00 00 04 00 F1 FF ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 0E 00 00 00 01 00 03 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0064: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................
tcc.js:46 0080: 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0096: 12 00 00 00 02 00 01 00 48 00 00 00 00 00 00 00 ........H.......
tcc.js:46 0112: 6C 00 00 00 00 00 00 00 17 00 00 00 02 00 01 00 l...............
tcc.js:46 0128: 7A 01 00 00 00 00 00 00 3C 00 00 00 00 00 00 00 z.......<.......
tcc.js:46 0144: 1C 00 00 00 02 00 01 00 0C 02 00 00 00 00 00 00 ................
tcc.js:46 0160: 68 00 00 00 00 00 00 00 23 00 00 00 02 00 01 00 h.......#.......
tcc.js:46 0176: B4 00 00 00 00 00 00 00 48 00 00 00 00 00 00 00 ........H.......
tcc.js:46 0192: 29 00 00 00 01 00 03 00 10 00 00 00 00 00 00 00 )...............
tcc.js:46 0208: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................
tcc.js:46 0224: 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0240: 2D 00 00 00 02 00 01 00 FC 00 00 00 00 00 00 00 -...............
tcc.js:46 0256: 7E 00 00 00 00 00 00 00 37 00 00 00 02 00 01 00 ~.......7.......
tcc.js:46 0272: B6 01 00 00 00 00 00 00 56 00 00 00 00 00 00 00 ........V.......
tcc.js:46 0288: 09 00 00 00 12 00 01 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0304: 48 00 00 00 00 00 00 00 H.......
tcc.js:46
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fwrite: size=1, nmemb=65, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 00 68 65 6C 6C 6F 2E 63 00 6D 61 69 6E 00 4C 2E .hello.c.main.L.
tcc.js:46 0016: 30 00 70 75 74 73 00 65 78 69 74 00 73 74 72 6C 0.puts.exit.strl
tcc.js:46 0032: 65 6E 00 77 72 69 74 65 00 4C 2E 31 00 73 79 73 en.write.L.1.sys
tcc.js:46 0048: 5F 63 61 6C 6C 33 00 73 79 73 5F 63 61 6C 6C 31 _call3.sys_call1
tcc.js:46 0064: 00 .
tcc.js:46
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fwrite: size=1, nmemb=264, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 1C 00 00 00 00 00 00 00 17 00 00 00 02 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ .......
tcc.js:46 0032: 18 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 24 00 00 00 00 00 00 00 13 00 00 00 04 00 00 00 $...............
tcc.js:46 0064: 00 00 00 00 00 00 00 00 30 00 00 00 00 00 00 00 ........0.......
tcc.js:46 0080: 13 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0096: 64 00 00 00 00 00 00 00 13 00 00 00 06 00 00 00 d...............
tcc.js:46 0112: 00 00 00 00 00 00 00 00 78 00 00 00 00 00 00 00 ........x.......
tcc.js:46 0128: 13 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0144: 84 00 00 00 00 00 00 00 17 00 00 00 08 00 00 00 ................
tcc.js:46 0160: 00 00 00 00 00 00 00 00 88 00 00 00 00 00 00 00 ................
tcc.js:46 0176: 18 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0192: 94 00 00 00 00 00 00 00 13 00 00 00 07 00 00 00 ................
tcc.js:46 0208: 00 00 00 00 00 00 00 00 E4 00 00 00 00 00 00 00 ................
tcc.js:46 0224: 13 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0240: 9A 01 00 00 00 00 00 00 13 00 00 00 0B 00 00 00 ................
tcc.js:46 0256: 00 00 00 00 00 00 00 00 ........
tcc.js:46
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fputc: ch=0x00, stream=tcc-wasm.FILE@7
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 00 2E 74 65 78 74 00 2E 64 61 74 61 00 2E 64 61 ..text..data..da
tcc.js:46 0016: 74 61 2E 72 6F 00 2E 62 73 73 00 2E 73 79 6D 74 ta.ro..bss..symt
tcc.js:46 0032: 61 62 00 2E 73 74 72 74 61 62 00 2E 72 65 6C 61 ab..strtab..rela
tcc.js:46 0048: 2E 74 65 78 74 00 2E 73 68 73 74 72 74 61 62 00 .text..shstrtab.
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 01 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@.......
tcc.js:46 0032: 74 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t...............
tcc.js:46 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 07 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 C0 02 00 00 00 00 00 00 ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 0D 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 C0 02 00 00 00 00 00 00 ................
tcc.js:46 0032: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 16 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 E0 02 00 00 00 00 00 00 ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0048: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 1B 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0016: 00 00 00 00 00 00 00 00 E0 02 00 00 00 00 00 00 ................
tcc.js:46 0032: 38 01 00 00 00 00 00 00 06 00 00 00 0C 00 00 00 8...............
tcc.js:46 0048: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 23 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 #...............
tcc.js:46 0016: 00 00 00 00 00 00 00 00 20 04 00 00 00 00 00 00 ........ .......
tcc.js:46 0032: 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A...............
tcc.js:46 0048: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 2B 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 +...............
tcc.js:46 0016: 00 00 00 00 00 00 00 00 70 04 00 00 00 00 00 00 ........p.......
tcc.js:46 0032: 08 01 00 00 00 00 00 00 05 00 00 00 01 00 00 00 ................
tcc.js:46 0048: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fwrite: size=1, nmemb=64, stream=tcc-wasm.FILE@7
tcc.js:46 0000: 36 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 6...............
tcc.js:46 0016: 00 00 00 00 00 00 00 00 80 05 00 00 00 00 00 00 ................
tcc.js:46 0032: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @...............
tcc.js:46 0048: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 fclose: stream=tcc-wasm.FILE@7
tcc.js:46 a.out: 2048 bytes
tcc.js:46 0000: 7F 45 4C 46 02 01 01 00 00 00 00 00 00 00 00 00 .ELF............
tcc.js:46 0016: 01 00 F3 00 01 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0032: 00 00 00 00 00 00 00 00 C0 05 00 00 00 00 00 00 ................
tcc.js:46 0048: 04 00 00 00 40 00 00 00 00 00 40 00 09 00 08 00 ....@.....@.....
tcc.js:46 0064: 13 01 01 FE 23 3C 11 00 23 38 81 00 13 04 01 02 ....#<..#8......
tcc.js:46 0080: 13 00 00 00 23 34 A4 FE 23 30 B4 FE 17 05 00 00 ....#4..#0......
tcc.js:46 0096: 13 05 05 00 97 00 00 00 E7 80 00 00 1B 05 00 00 ................
tcc.js:46 0112: 97 00 00 00 E7 80 00 00 83 30 81 01 03 34 01 01 .........0...4..
tcc.js:46 0128: 13 01 01 02 67 80 00 00 13 01 01 FE 23 3C 11 00 ....g.......#<..
tcc.js:46 0144: 23 38 81 00 13 04 01 02 13 00 00 00 23 34 A4 FE #8..........#4..
tcc.js:46 0160: 03 35 84 FE 97 00 00 00 E7 80 00 00 13 06 05 00 .5..............
tcc.js:46 0176: 83 35 84 FE 1B 05 10 00 97 00 00 00 E7 80 00 00 .5..............
tcc.js:46 0192: 1B 06 10 00 97 05 00 00 93 85 05 00 23 22 A4 FE ............#"..
tcc.js:46 0208: 1B 05 10 00 97 00 00 00 E7 80 00 00 83 25 44 FE .............%D.
tcc.js:46 0224: 3B 85 A5 00 83 30 81 01 03 34 01 01 13 01 01 02 ;....0...4......
tcc.js:46 0240: 67 80 00 00 13 01 01 FD 23 34 11 02 23 30 81 02 g.......#4..#0..
tcc.js:46 0256: 13 04 01 03 13 00 00 00 23 34 A4 FE 23 30 B4 FE ........#4..#0..
tcc.js:46 0272: 23 3C C4 FC 83 26 84 FD 03 26 04 FE 83 25 84 FE #<...&...&...%..
tcc.js:46 0288: 1B 05 D0 03 97 00 00 00 E7 80 00 00 83 30 81 02 .............0..
tcc.js:46 0304: 03 34 01 02 13 01 01 03 67 80 00 00 13 01 01 FB .4......g.......
tcc.js:46 0320: 23 34 11 04 23 30 81 04 13 04 01 05 13 00 00 00 #4..#0..........
tcc.js:46 0336: 23 34 A4 FE 23 30 B4 FE 23 3C C4 FC 23 38 D4 FC #4..#0..#<..#8..
tcc.js:46 0352: 03 25 04 FD 23 34 A4 FC 93 16 05 02 93 D6 06 02 .%..#4..........
tcc.js:46 0368: 03 25 84 FD 23 30 A4 FC 13 16 05 02 13 56 06 02 .%..#0.......V..
tcc.js:46 0384: 03 25 04 FE 23 3C A4 FA 93 15 05 02 93 D5 05 02 .%..#<..........
tcc.js:46 0400: 03 25 84 FE 13 15 05 02 13 55 05 02 23 38 A4 FA .%.......U..#8..
tcc.js:46 0416: 73 00 00 00 01 00 03 25 04 FB 83 30 81 04 03 34 s......%...0...4
tcc.js:46 0432: 01 04 13 01 01 05 67 80 00 00 13 01 01 FE 23 3C ......g.......#<
tcc.js:46 0448: 11 00 23 38 81 00 13 04 01 02 13 00 00 00 23 34 ..#8..........#4
tcc.js:46 0464: A4 FE 83 25 84 FE 1B 05 80 00 97 00 00 00 E7 80 ...%............
tcc.js:46 0480: 00 00 6F 00 00 00 83 30 81 01 03 34 01 01 13 01 ..o....0...4....
tcc.js:46 0496: 01 02 67 80 00 00 13 01 01 FD 23 34 11 02 23 30 ..g.......#4..#0
tcc.js:46 0512: 81 02 13 04 01 03 13 00 00 00 23 34 A4 FE 23 30 ..........#4..#0
tcc.js:46 0528: B4 FE 03 25 04 FE 23 3C A4 FC 93 15 05 02 93 D5 ...%..#<........
tcc.js:46 0544: 05 02 03 25 84 FE 13 15 05 02 13 55 05 02 23 38 ...%.......U..#8
tcc.js:46 0560: A4 FC 73 00 00 00 01 00 03 25 04 FD 83 30 81 02 ..s......%...0..
tcc.js:46 0576: 03 34 01 02 13 01 01 03 67 80 00 00 13 01 01 FE .4......g.......
tcc.js:46 0592: 23 3C 11 00 23 38 81 00 13 04 01 02 13 00 00 00 #<..#8..........
tcc.js:46 0608: 23 34 A4 FE 1B 05 00 00 23 22 A4 FE 03 35 84 FE #4......#"...5..
tcc.js:46 0624: 83 45 05 00 63 94 05 00 6F 00 80 02 03 35 84 FE .E..c...o....5..
tcc.js:46 0640: 93 05 05 00 13 05 15 00 23 34 A4 FE 03 25 44 FE ........#4...%D.
tcc.js:46 0656: 93 05 05 00 1B 05 15 00 23 22 A4 FE 6F F0 1F FD ........#"..o...
tcc.js:46 0672: 03 25 44 FE 83 30 81 01 03 34 01 01 13 01 01 02 .%D..0...4......
tcc.js:46 0688: 67 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 g...............
tcc.js:46 0704: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 21 0A 00 Hello, World!!..
tcc.js:46 0720: 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0736: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0752: 00 00 00 00 00 00 00 00 01 00 00 00 04 00 F1 FF ................
tcc.js:46 0768: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0784: 0E 00 00 00 01 00 03 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0800: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................
tcc.js:46 0816: 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0832: 12 00 00 00 02 00 01 00 48 00 00 00 00 00 00 00 ........H.......
tcc.js:46 0848: 6C 00 00 00 00 00 00 00 17 00 00 00 02 00 01 00 l...............
tcc.js:46 0864: 7A 01 00 00 00 00 00 00 3C 00 00 00 00 00 00 00 z.......<.......
tcc.js:46 0880: 1C 00 00 00 02 00 01 00 0C 02 00 00 00 00 00 00 ................
tcc.js:46 0896: 68 00 00 00 00 00 00 00 23 00 00 00 02 00 01 00 h.......#.......
tcc.js:46 0912: B4 00 00 00 00 00 00 00 48 00 00 00 00 00 00 00 ........H.......
tcc.js:46 0928: 29 00 00 00 01 00 03 00 10 00 00 00 00 00 00 00 )...............
tcc.js:46 0944: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 ................
tcc.js:46 0960: 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 0976: 2D 00 00 00 02 00 01 00 FC 00 00 00 00 00 00 00 -...............
tcc.js:46 0992: 7E 00 00 00 00 00 00 00 37 00 00 00 02 00 01 00 ~.......7.......
tcc.js:46 1008: B6 01 00 00 00 00 00 00 56 00 00 00 00 00 00 00 ........V.......
tcc.js:46 1024: 09 00 00 00 12 00 01 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1040: 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 H...............
tcc.js:46 1056: 00 68 65 6C 6C 6F 2E 63 00 6D 61 69 6E 00 4C 2E .hello.c.main.L.
tcc.js:46 1072: 30 00 70 75 74 73 00 65 78 69 74 00 73 74 72 6C 0.puts.exit.strl
tcc.js:46 1088: 65 6E 00 77 72 69 74 65 00 4C 2E 31 00 73 79 73 en.write.L.1.sys
tcc.js:46 1104: 5F 63 61 6C 6C 33 00 73 79 73 5F 63 61 6C 6C 31 _call3.sys_call1
tcc.js:46 1120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1136: 1C 00 00 00 00 00 00 00 17 00 00 00 02 00 00 00 ................
tcc.js:46 1152: 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 ........ .......
tcc.js:46 1168: 18 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1184: 24 00 00 00 00 00 00 00 13 00 00 00 04 00 00 00 $...............
tcc.js:46 1200: 00 00 00 00 00 00 00 00 30 00 00 00 00 00 00 00 ........0.......
tcc.js:46 1216: 13 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1232: 64 00 00 00 00 00 00 00 13 00 00 00 06 00 00 00 d...............
tcc.js:46 1248: 00 00 00 00 00 00 00 00 78 00 00 00 00 00 00 00 ........x.......
tcc.js:46 1264: 13 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1280: 84 00 00 00 00 00 00 00 17 00 00 00 08 00 00 00 ................
tcc.js:46 1296: 00 00 00 00 00 00 00 00 88 00 00 00 00 00 00 00 ................
tcc.js:46 1312: 18 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1328: 94 00 00 00 00 00 00 00 13 00 00 00 07 00 00 00 ................
tcc.js:46 1344: 00 00 00 00 00 00 00 00 E4 00 00 00 00 00 00 00 ................
tcc.js:46 1360: 13 00 00 00 0A 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1376: 9A 01 00 00 00 00 00 00 13 00 00 00 0B 00 00 00 ................
tcc.js:46 1392: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1408: 00 2E 74 65 78 74 00 2E 64 61 74 61 00 2E 64 61 ..text..data..da
tcc.js:46 1424: 74 61 2E 72 6F 00 2E 62 73 73 00 2E 73 79 6D 74 ta.ro..bss..symt
tcc.js:46 1440: 61 62 00 2E 73 74 72 74 61 62 00 2E 72 65 6C 61 ab..strtab..rela
tcc.js:46 1456: 2E 74 65 78 74 00 2E 73 68 73 74 72 74 61 62 00 .text..shstrtab.
tcc.js:46 1472: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1488: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1504: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1536: 01 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 ................
tcc.js:46 1552: 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 ........@.......
tcc.js:46 1568: 74 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t...............
tcc.js:46 1584: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1600: 07 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 1616: 00 00 00 00 00 00 00 00 C0 02 00 00 00 00 00 00 ................
tcc.js:46 1632: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1648: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1664: 0D 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 1680: 00 00 00 00 00 00 00 00 C0 02 00 00 00 00 00 00 ................
tcc.js:46 1696: 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1712: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1728: 16 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 ................
tcc.js:46 1744: 00 00 00 00 00 00 00 00 E0 02 00 00 00 00 00 00 ................
tcc.js:46 1760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1776: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1792: 1B 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1808: 00 00 00 00 00 00 00 00 E0 02 00 00 00 00 00 00 ................
tcc.js:46 1824: 38 01 00 00 00 00 00 00 06 00 00 00 0C 00 00 00 8...............
tcc.js:46 1840: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................
tcc.js:46 1856: 23 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 #...............
tcc.js:46 1872: 00 00 00 00 00 00 00 00 20 04 00 00 00 00 00 00 ........ .......
tcc.js:46 1888: 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A...............
tcc.js:46 1904: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46 1920: 2B 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 +...............
tcc.js:46 1936: 00 00 00 00 00 00 00 00 70 04 00 00 00 00 00 00 ........p.......
tcc.js:46 1952: 08 01 00 00 00 00 00 00 05 00 00 00 01 00 00 00 ................
tcc.js:46 1968: 08 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 ................
tcc.js:46 1984: 36 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 6...............
tcc.js:46 2000: 00 00 00 00 00 00 00 00 80 05 00 00 00 00 00 00 ................
tcc.js:46 2016: 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 @...............
tcc.js:46 2032: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
tcc.js:46
tcc.js:46 compile_program: end
tcc.js:80 main: ptr=18481152
tcc.js:85 main: len=2048
tcc.js:101 {elf_data: '%7f%45%4c%46%02%01%01%00%00%00%00%00%00%00%00%00%0…0%01%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00'}
tcc.js:103 main: end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment