- 所有 tcc 文件/内容/宏改名为 pcc (tcc.c->pcc.c, tccelf.c->pccelf.c, libtcc.c->libpcc.c 等) - 支持架构: i386, x86_64, ARM, ARM64, RISC-V, C67 - 支持格式: PE, ELF, Mach-O, COFF - 完整预处理、代码生成、链接器、调试信息 - 构建成功: pcc.exe (x86_64 Windows) - 功能测试通过: 递归/结构体/浮点/switch/循环 - 自编译测试通过: pcc 可以编译自身
42 行
963 B
C
42 行
963 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
asm (
|
|
".text;"
|
|
".globl _us;.globl _ss;.globl _uc;.globl _sc;"
|
|
"_us:;_ss:;_uc:;_sc:;"
|
|
"movl $0x1234ABCD, %eax;"
|
|
"ret;"
|
|
);
|
|
|
|
#ifndef __leading_underscore
|
|
#define us _us
|
|
#define ss _ss
|
|
#define uc _uc
|
|
#define sc _sc
|
|
#endif
|
|
|
|
int main()
|
|
{
|
|
unsigned short us(void);
|
|
short ss(void);
|
|
unsigned char uc(void);
|
|
signed char sc(void);
|
|
|
|
unsigned short (*fpus)(void) = us;
|
|
short (*fpss)(void) = ss;
|
|
unsigned char (*fpuc)(void) = uc;
|
|
signed char (*fpsc)(void) = sc;
|
|
|
|
printf("%08X %08X\n", us() + 1, fpus() + 1);
|
|
printf("%08X %08X\n", ss() + 1, fpss() + 1);
|
|
printf("%08X %08X\n", uc() + 1, fpuc() + 1);
|
|
printf("%08X %08X\n", sc() + 1, fpsc() + 1);
|
|
printf("\n");
|
|
printf("%08X %08X\n", fpus() + 1, us() + 1);
|
|
printf("%08X %08X\n", fpss() + 1, ss() + 1);
|
|
printf("%08X %08X\n", fpuc() + 1, uc() + 1);
|
|
printf("%08X %08X\n", fpsc() + 1, sc() + 1);
|
|
|
|
return 0;
|
|
}
|