創作內容

0 GP

3/28,大有斬獲,Visual Studio 2017 免費授權版編譯Corman Lisp順利l,與使用其反組譯功能

作者:李兒諳│2017-03-28 15:30:57│巴幣:0│人氣:578
3/28星期二,今天放假(下次放假印象中是4/1)
但由於時段感人
因此實況估計是沒太多人看到(此外我今天幾乎拖到12:40才實況)

「想要說些什麼,又不知從何說起」
首先建議
電腦先保持C槽或者說ProgramFile和ProgramFile(x86)的那個槽
有著20GB以上的空間
然後電腦的作業系統
至少要Windows 7 SP 1更新到最新
(因為那是Visual Studio 2017 community安裝的最底需求)

我是只安裝Visual Studio C++
然後其它工具組都不安裝
其它的話可能20GB的空間還不夠安全
唔...版本資訊還不太清楚怎麼看直觀有用的
如果大家安裝過程有遇到問題的話
還是建議問Microsoft啦
不過若我有時間
沒有太多人有問題的話
問我可能也會處理下
但畢竟我這邊沒碰到太多彎路
可能會處理不了或不知道問題出現在哪邊

在編譯過程中
很可能會遇到的問題是
(首先應該是會有警告訊息
說需要安裝幾個工具組
像MFC、舊版Windows相關支援的
因此才說空間要多留些)
但那些處理好之後

大家最容易遇到的問題是
找不到 stddef.h
找不到 ctype.h

這是為何呢?
我們看程式碼
它們是寫
#include <stddef.h>
#include <ctype.h>
這類形式
(雖然這開放原始碼的團體或者說作者相當的嚴謹
這邊全都用#ifndef之類的方式來寫
但大致上程式碼就是長這樣)

注意
如果是用<>這種括號
代表應該是系統函式庫
所以找不到這兩個標頭檔
這鍋─Corman Lisp不揹
稍微去找下網路上有沒有人遇到相同現象
於是找到這篇

若看不懂沒關係
簡單來說就是
有些傳統的系統函式庫
在Visual Studio 2015的某個版本後
會放在這邊
C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\ucrt
可以把這個設定為Header Files的連結
再不然就是自己手動把兩個標頭檔
複製到zlib project底下的Header Files
我是有些偷懶用複製貼上的方式啦
然後再把整個方案重新建置一次
應該就可以順利編譯過了

然後就是
試用下
Corman Lisp的賣點功能
在順利建置之後
cormanlisp-master資料夾底下
應該會跑出個
CormanLisp.exe (Windows底下基本上檔名無視大小寫,也就是大小寫視為同一個)

那個
用GUI的方式取代傳統的命令列模式
唔...
以前命令列的模式有些操作
我在其它地方有談過
由於暫時在這邊用不到這技巧
我只說
命令列模式還是可以輕鬆複製貼上
不過這種GUI的.exe還是有其優勢

然後大家可以試著打(當然更建議複製貼上)以下這些
(defun f (a) (1+ a))
按enter
(eq (symbol-function 'f)
     (progn (disassemble 'f)
            (symbol-function 'f)))
再按enter

根據上述觀察
若要使用disassemble 也就是反組譯
基本上針對的對象很可能是~
函數或者說函式!!

若如法炮製的話
(defun div33 (a) (/ 3 5))
基本上除非指令太長
不然我換一行就是enter的意思啦
這邊就沒特別寫enter了
(disassemble 'div33)
這樣就能反組譯出Corman Lisp的除法了

接著就看自己組合語言的造化了
我還在研究
話說以前幾乎不曾接觸過 x86組合語言的 test指令
看了下說明,感覺上是類似Linux chmod 777原理的指令
主要是用來判斷 正數還負數還0或奇偶同位這樣

我覺得這設計的還蠻厲害的
(附帶一提,Corman Lisp基本上是按照一個版本的common Lisp的規範
因此刻意示範除法
common Lisp重要特徵是,用分子分母表示除法
由於這特性
common Lisp、Matlab是少數3*(1/3)和7*(1/7)能等於1的程式語言或者說DSL一類的)

反組譯
居然還反出註解來
夏再嚇:恁...啊,沒~沒,這也太瞎了吧
夏知饋:唔,針對些較難理解的組合語言特化下,感覺也不是不可能的事情

嗯,那這篇大概就這樣
以後若我變強的話

I'll find my way.
I can go the distance.
I'll be there someday.
If I can be strong.

等等等等,回來回來
以後若我變強的話
我們還會再見面的
若我沒變強的話
大概,也許,可能還是會再見面
只是談的不是Corman Lisp、gcc、SWI-prolog、Haskell這樣
(都做到這地步了,還沒辦法理解函數式語言跟命令式語言的核心差異的話
我看還是早早放棄研究底層相關
專心的只研究如何利用現有的遊戲引擎與別人的函式庫即可
因為連這都做不到的話
簡單來講別人給我看原始碼也藥石罔效了這樣!!
就像是梅森質數旋轉法、卡馬克倒數快速開根法那樣
雖然兩者有些差異
後面那兩個演算法比較需要些數學方面的知識
而且還是不一般的數學
需要性質接近 數值分析 的那種數學
但前面那組合語言的理解
是比較傾向於 逆向工程 計算機結構 作業系統的理解)

嗯,要當個合格的程序員或者說程式設計師啊
除非終身當學者吧
不然在學校的時間肯定是不夠用的
特別是 張亞勤 那類的程序員
雖然 張亞勤那類的程序員
在學校一年的時間能抵過別人數年就是了
呀,這不太重要
張亞勤雖然是張亞勤
但我也絕非善類就是了!!
「我就是我,不一樣的古籠火」

本篇就此end!!
若編譯過程或安裝過程有問題
可以試著做影片傳到youtube上
或者是貼些錯誤訊息給我
因為我覺得這邊會有問題
除非是硬體問題
不然這邊都有問題了
用英文去MSDN相關論壇求助
基本上大概也是不太可能的事情
但我不見得很快就會回覆就是了
特別是狀況很奇怪的時候

然後
這篇提到的東西
用不到很好的顯示卡
因為我的獨立顯示卡目前是壞掉的

最後,本篇真的正式結束!!
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=3525963
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Corman Lisp|反組譯|disassemble|張亞勤

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:3/27,實況內容,寫知... 後一篇:3/30,實況,先回答篇...

追蹤私訊切換新版閱覽

作品資料夾

a86189642祝福
看到的人會變得幸福哦~看更多我要大聲說昨天14:02


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】