[問題] 如何讓C盡量有組合語言的形式
問題(Question):
我想試試看實作一個C編譯器
之前沒有學過編譯器,看了幾個星期的資料後,還是不太懂編譯器
不過土法煉鋼,還是煉出了一些東西
因為不知道寫一個編譯器的難度,所以簡化一下目標,只做編譯器的前端
使用C作為中間語言,希望可以去除語法糖,和格式盡量和組合語言相近,以便後端實做
使用遞迴下降方法,沒有多少檢查(int str = "aabbcc"; 是可以的)
語法3成參考K&R,7成用猜的,程式碼寫的不夠合理,常常加一個功能就要動到整個專案
之後收集更多資料後會全部打掉重練
目前有做出int、char的宣告if、while
之後想做陣列&指標的功能,但不知道指標的宣告和使用該如何簡化
想請各位大大提供一些方向
謝謝
p.s
以一個1+...+100的迴圈程式為例
輸入:
int main()
{
int a = 101;
int out = 0;
while(a = a - 1)
out = out + a;
}
輸出:
int r0;int r1;int r2;int r3;int r4;int r5;int r6;int r7;int r8;int r9;int
r10;int r11;int r12;int r13;int r14;int r15;int r16;int r17;int r18;int r19;
int main()
{
r0 = 101;
int a = r0;
r0 = 0;
int out = r0;
L0:
r0 = a;
r1 = a;
r2 = 1;
r3 = r1 - r2;
r0 = r3;
a = r3;
if(!r0) goto L1;
r4 = out;
r5 = out;
r6 = a;
r7 = r5 + r6;
r4 = r7;
out = r7;
goto L0;
L1:
}
希望輸入的程式碼可以轉成這種最簡形式
--
「我不創造美少女,我只是從紙中看見了天使,並用手使她們自由。」
——矢吹
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.109.77
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1557157798.A.E9F.html
→
05/07 07:41,
6年前
, 1F
05/07 07:41, 1F
→
05/07 07:41,
6年前
, 2F
05/07 07:41, 2F
會有這樣的現象是因為我在亂寫....,原本是計算機的形式(輸入一個算式,輸出是三位址
碼),處理的時候是以一行作為單位,處理完之後,暫存器編號歸零,後來擴充功能後這樣
的形式也保留了下來
※ 編輯: wei115 (27.246.39.28), 05/07/2019 09:41:02
→
05/07 11:10,
6年前
, 3F
05/07 11:10, 3F
→
05/07 11:53,
6年前
, 4F
05/07 11:53, 4F
→
05/07 11:54,
6年前
, 5F
05/07 11:54, 5F
→
05/07 12:10,
6年前
, 6F
05/07 12:10, 6F
→
05/07 12:26,
6年前
, 7F
05/07 12:26, 7F
→
05/07 12:26,
6年前
, 8F
05/07 12:26, 8F
→
05/07 13:22,
6年前
, 9F
05/07 13:22, 9F
→
05/07 13:22,
6年前
, 10F
05/07 13:22, 10F
普通的運算式我可以這樣寫,但像是指標和陣列我就不知道怎麼分解了......
→
05/07 13:47,
6年前
, 11F
05/07 13:47, 11F
C++感覺更難......
※ 編輯: wei115 (27.246.39.28), 05/07/2019 14:03:13
推
05/07 18:17,
6年前
, 12F
05/07 18:17, 12F
→
05/09 03:16,
6年前
, 13F
05/09 03:16, 13F
→
05/09 03:17,
6年前
, 14F
05/09 03:17, 14F
→
05/09 03:20,
6年前
, 15F
05/09 03:20, 15F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章