現在的IDE簡化了許多開發的步驟
常常在寫完一支程式時按下編譯便直接產生出一支可執行檔
甚至還能順便執行
但你有沒有想過...
一支程式是如何產生?
從組合語言到可執行檔會經過哪些程序?
用組合語言撰寫一支程式時至少該知道什麼?
在撰寫時該注意到哪些東西?
又或者到底藏了什麼黑技術?
我會盡我所能將我所知道的知識寫在本次的鐵人賽中
也會盡量做到鉅細靡遺
若文章中有錯誤之處也請盡量告訴我
我會盡量去了解並修正錯誤的知識點
自介與開賽原因 我現在是大三生,在朋友的慫恿下參加了這次的鐵人賽,但我都到處亂學,這邊學一點那邊學一點,導致每項技能都不夠深入,本身也有在資安社團中學習,但 w...
本次我使用的組譯器是 NASM ( The Netwide Assembler ),我所使用的語法是 intel 的語法,將程式碼打在文字文件 ( 對你沒看錯...
本次使用的組譯器為 nasm ,其他類似的組譯器還有 masm 與 yasm ,但我們這次不會使用,那環境建置好了就來個慣例的 HelloWorld exter...
今天先來講組語的撰寫的結構與部分保留字。 結構主要為以下形式 標籤名稱: 指令內容與參數 ;註解 第一部分就是標籤的名稱,可以作為跳轉的位置,若沒有需...
今天來談記憶體架構,在我們的程式碼裡可以看到它們被分成了 .data 、.text 、 .bss 等區塊,這件是在記憶中也會做相似的事情,例如這篇文章所述,此圖...
暫存器是 CPU 運算時暫時儲存數據的地方,不同的 CPU 架構會有不同的設計,暫存器也會有不同的數量與用法,更甚至指令與底層的機械碼會不一樣,所以在進行底層開...
今天談到呼叫慣例,因為在呼叫函數時,總是會有需要傳遞參數的時候,但參數究竟要放進哪個暫存器 ? 順序又要怎麼擺放 ? 這時候就要參考呼叫慣例,將參數放進對的暫存...
今天我們來一次好久沒做的實作,做出 Microsoft rand() ,若是使用 Dev-C++ 進行程式開發的人,多少會有使用過 random 函數,那有沒有...
直接附上我的 code extern _main extern _printf extern _scanf section .data sca_fm: db...