





#define REGS_FOREACH(_) _(X) _(Y)
#define RUN_LOGIC X1 = !X && Y; \
Y1 = !X && !Y;
#define DEFINE(X) static int X, X##1;
#define UPDATE(X) X = X##1;
#define PRINT(X) printf(#X " = %d; ", X);
int main() {
REGS_FOREACH(DEFINE);
while (1) { // clock
RUN_LOGIC;
REGS_FOREACH(PRINT);
REGS_FOREACH(UPDATE);
putchar('\n'); sleep(1);
}
}

看文档
gcc a.out | python3 seven-seg.py
http://jyywiki.cn/OS/2022/slides/2.slides#/2/2
py代码 接受每一个输入 然后显示
通过 || 将c程序的输出作为py程序的输入

layout src 进入 用 c的方式C 程序的状态机模型 (语义,semantics)
状态 = 堆 + 栈
初始状态 = main 的第一条语句
迁移 = 执行一条简单语句
任何 C 程序都可以改写成 “非复合语句” 的 C 代码

函数调用 : 创建栈帧 pc ++
函数返回 消除栈帧

本质仍然是计算


int main() {
printf("Hello, World\n");
}
gcc 编译出来的文件不满足 “最小” --verbose 可以查看所有编译选项 (真不少)
printf 变成了 puts@plt -static 会复制 libc
汇编实现 :http://jyywiki.cn/pages/OS/2022/demos/minimal.S


syscall补充知识点

void foo() {
int x = 1;
}





