关于 jump(goto) 与 for/while 的互转

学术版

@[SlaineTroyard](/user/450246) 您是否在找:汇编语言
by 览遍千秋 @ 2024-04-21 22:45:13


语言 A=汇编, 程序 1=编译器
by m256i @ 2024-04-21 22:46:21


@[SlaineTroyard](/user/450246) - 编译器算法,C++ 转汇编语言是将 for/while 转化为 if goto - 反编译算法,汇编语言转 C 是将 if goto 转 for/while
by Terrible @ 2024-04-21 22:46:55


<https://godbolt.org/>
by Terrible @ 2024-04-21 22:47:41


问题背景: 有一款类二维沙盒游戏 Mindustry,其自定义逻辑系统仅支持 `if-jump` 语句作为分支结构和循环结构。 但是对于天天用 C++ 的我来说,用 `if-jump` 写循环简直就是折磨。于是我希望对某个问题,用高级语言实现后,再将这份代码转化为 Mindustry 逻辑系统的代码。 这就是这个问题的由来。 不过本人好久没有玩过这个游戏了,只是突然回想到这个问题,于是来问一下。因此,并不必须解决。
by SlaineTroyard @ 2024-04-21 22:47:44


@[览遍千秋](/user/28910) 是这样的,因为没有学过汇编所以不知道汇编是不是等于这东西
by SlaineTroyard @ 2024-04-21 22:48:40


@[Terrible](/user/195942) 感谢(原来这玩意就是反编译草)
by SlaineTroyard @ 2024-04-21 22:50:10


@[SlaineTroyard](/user/450246) 我也是mindustry玩家hhhhh
by 鏡音リン @ 2024-04-22 02:08:45


@[SlaineTroyard](/user/450246) for转goto是挺简单的 ```for(A;B;C){X};``` → ``` A; xxx: if not B goto yyy X; C; goto xxx yyy: ``` 反过来不太行,因为不是所有东西都能表示成循环结构
by 鏡音リン @ 2024-04-22 02:11:16


@[鏡音リン](/user/90893) 可以的吧,这两种语言都图灵完备
by Auferstanden @ 2024-04-22 08:10:47


| 下一页