Read More1.8K views3 minute read Operating SystemGCC Inline AssemblyByWayne30/09/2023 GCC 的 inline assembly 讓我們可以在 C code 中嵌入 assembly code。比起直接撰寫 assembly code,C 程式碼的可讀性好多了。本文章將介紹如何使用 GCC inline assembly。 Read More 0 0 0 0
Read More973 views3 minute read Operating Systemx86-64 Calling ConventionsByWayne27/09/2023 Calling conventions 是指一個函式呼叫另一個函式時,這兩個函式應該遵守的規範。例如,它們之間如何傳遞參數與回傳值。Calling conventions 是 application binary interface(ABI)的一部分。 Read More 0 0 0 0
Read More1.1K views5 minute read Operating SystemLinker ScriptByWayne25/09/2023 在將 source files 編譯成 executable file 時,GCC 會將 source files 編譯成 object files。然後,linker 依據 linker script 將 object files 鏈結成 executable file。 Read More 0 0 0 0
Read More1.2K views3 minute read Operating Systemx86 Memory MapByWayne20/09/2023 在 x86 PC 起動後,它會處在 real mode。此時,我們可以存取 1 MB 以下的 memory。然而,BIOS 也會使用一些 memory。因此,我們必須要知道 BIOS 佔據哪些範圍,才能夠避開它們 Read More 0 0 0 0
Read More807 views13 minute read Operating SystemELFByWayne17/09/2023 ELF file 是 Linux 使用的檔案格式。不管是要學習 linkers 或是反組譯,都需要了解 ELF file。本文章將介紹 ELF 檔案格式。 Read More 0 0 0 0
Read More903 views4 minute read Operating SystemMakefileByWayne13/09/2023 Makefile 是 Linux 中最常用的編譯工具了。Stuart Feldman 在 1967 的 Bell Labs 裡創造了它。雖然它可能比你我的年紀都還大,但是它現在還是依然地活躍。本文章將介紹 Makefile 的一些基本語法。 Read More 0 0 0 0
Read More651 views2 minute read LeetCode72. Edit DistanceByWayne20/08/2023 在解此題時,我們要先觀察 word1 如何變成 word2。以 Example1 為例,左下圖列出 “horse” 轉變成 “ros” 的 distance。表中,縱軸表示 “horse”,而橫軸表示 “ros”。 Read More 0 0 0 0
Read More578 views2 minute read LeetCode1048. Longest String ChainByWayne19/08/2023 此題中,wordA 是 wordB 的 predecessor 指只要插入一個 letter 到 wordA,那就會使得它和 wordB 一樣。然而,插入一個 letter 到一個地方,就要考慮 26 種字母。這使得整體的複雜度上升。 Read More 0 0 0 0
Read More778 views2 minute read AlgorithmPriority Queue & HeapByWayne18/08/2023 Priority queue 是一個很好用的 data structure。它可以在常數時間內提供最大或最小值。在了解它之前,我們要先了解另一個 data structure 叫 heap。因為 priority queue 常常會用 heap 來實作。 Read More 0 0 0 0
Read More730 views2 minute read AlgorithmBinary Search TreeByWayne17/08/2023 二元搜尋樹(Binary search tree, BST)是一種二元樹(binary tree)。它提供了一些有用操作,包含 search、insert、delete、minimum、maximum、successor 和 predecessor。 Read More 0 0 0 0