游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: takaku

编译器写了一部分,大家帮忙看看(面向过程)

[复制链接]

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-11-15 16:22:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-12-2 18:13:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-12-4 16:30:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-12-5 14:35:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-12-5 15:03:50 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

6

主题

104

帖子

720

积分

高级会员

Rank: 4

积分
720
QQ
发表于 2024-12-17 01:18:52 | 显示全部楼层
编译器后端有现成的工具,这个东西叫代码生成器,英文名codegen,这个工具是把汇编,各种自动定义的中间代码,或者vm代码,直接生成x86或者arm的二进制可执行程序或者函数库,最终生成的代码是机器码,连汇编这个环节都可以跳过了,代码生成器本身用C语言编写的,是一个复杂的函数库。

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2024-12-23 15:43:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

6

主题

104

帖子

720

积分

高级会员

Rank: 4

积分
720
QQ
发表于 2025-1-6 16:55:44 | 显示全部楼层
crystal2012 发表于 2024-12-23 15:43
Re 楼上的亲
我的代码是在我自定义的VM里执行的
所以不是把vm代码转换成x86机器码

中间代码的意义是什么呢?编译器的本质就是把复杂的表达式和函数语句最终拆解成简单的指令,按照CPU的工作模式去执行,解释器则是状态机,是可以随时跟用户交互的状态机,解释器本身也可以直接解析复杂的表达式和语句,现在有一种技术叫 WebAssembly,也就是说因为脚本执行的太慢了,现在web也在用机器码的技术来解决执行效率问题,所以,中间代码仅仅是为了解析和语法分析方便而设计的,毫无实际的意义。最终是执行,和状态机。

6

主题

104

帖子

720

积分

高级会员

Rank: 4

积分
720
QQ
发表于 2025-1-6 23:02:10 | 显示全部楼层
crystal2012 发表于 2024-12-23 15:43
Re 楼上的亲
我的代码是在我自定义的VM里执行的
所以不是把vm代码转换成x86机器码

你所谓的VM,这个无论怎么设计,最终代码的执行,也是VM编写的C程序,转化成C函数最终去执行,所以本质最终都是依靠C编译器,或者系统中执行C函数的shell的能力,而代码生成器可以绕过这个环节,直接生成机器码。

0

主题

29

帖子

251

积分

禁止发言

积分
251
发表于 2025-1-30 19:48:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-4-1 06:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表