int main() {
printf("Hello, World\n");
}
gcc 编译出来的文件一点也不小
--verbose
可以查看所有编译选项 (真不少)-Wl,--verbose
可以查看所有链接选项 (真不少)-static
会链接 libc (大量的代码)我们可以手动链接编译的文件,直接指定二进制文件的入口
_start
避免警告)while (1);
可以链接并正确运行问题:为什么会 Segmentation Fault?
starti
可以帮助我们从第一条指令开始执行程序有办法让程序 “停下来” 吗?
解决办法:用一条特殊的指令请操作系统帮忙
movq $SYS_exit, %rax # exit(
movq $1, %rdi # status=1
syscall # );
为什么用 gcc 编译?
__ASSEMBLER__
宏区分汇编/C 代码)ANSI Escape Code 的更多应用
dialog --msgbox 'Hello, OS World!' 8 32
ssh -o 'HostKeyAlgorithms +ssh-rsa' sshtron.zachlatta.com
更重要的问题:怎样才能变强?
Everything is a state machine: 计算机 = 数字电路 = 状态机
操作系统上的程序