原创 ARMv8架構下程序運行時棧幀佈局

結合ARM相關文檔和在飛騰機器上使用gdb調試實際程序來研究ARM的指令和運行時棧幀佈局。主要參考了三篇文檔。 1. Procedure Call Standard for the ARM 64-bit Architecture。參考其中

原创 使用單指針實現雙鏈表(C++語言)

本文是Clifford A. Shaffer所著《數據結構與算法分析》(C++版)習題4.4的解答。 鏈表是常見的數據結構,鏈表中的結點通常定義如下。 template <typename E> class Link { public:

原创 哲學家就餐問題及其一種java多線程實現

1 概述 哲學家就餐問題,是並行程序中的一個經典問題,其描述如下。 1. 圓桌上有五位哲學家,每兩人中間有一個筷子。 2. 每個哲學家有兩件事情要做:     (1) 思考;     (2) 喫飯。哲學家必須同時拿到兩隻筷子,才能喫飯。

原创 GCC passes分析(一)

遍(passes)是GCC編譯器源代碼中的一個重要概念,對它們的理解是瞭解GCC源代碼的架構的基礎。本系列文章打算以此爲契機,對GCC編譯器源代碼做一個概要性的分析,分析對象爲GCC 4.9.1版本。 源代碼中,與Pass相關的文件有:

原创 ARM指令系統概述

摘譯自Matteo Franchin的PPT《ARMv8-A A64 ISA Overview》。 寄存器 ARM共有31個通用寄存器和2個特殊寄存器,都是64位。31個通用寄存器用X0到X30來表示,兩個特殊寄存器是SP和ZR。 SP是

原创 Huffman樹的建立、字符界面下的顯示及序列化(一)

本文主要是Clifford A. Shaffer所著的《Data Structures and Algorithm Analysis in C++》一書中項目設計習題5.7的實現。 Huffman樹是一種可以用來壓縮文件的技術。爲在計算機

原创 鏈式傳播算法推導

鏈式傳播算法推導 一些符號的意義 nnn:一個batch的大小 x,yx,yx,y:神經網絡的輸入和輸出 CCC:代價函數 aaa:激活函數 wi,jlw^{l}_{i,j}wi,jl​:從l−1l-1l−1層到lll層的權重,

原创 Linux下ELF格式可執行文件及動態鏈接相關部分的解析

Linux下面的ELF文件主要由ELF頭、程序頭和各個段組成。 二進制可執行文件結構 本文使用的示例程序如下。首先把它編譯爲可執行文件,再使用Linux下面的hexdump命令,把可執行文件完全轉換爲16進制的表示形式,然後分析這樣的

原创 算法導論筆記(2):幾種基本數據結構

1. 線性數據結構 線性數據結構中最重要的是數組和鏈表。訪問數組中任何一個元素所用的時間都是相同的,而鏈表不具備這樣的屬性。數組被用於實現其他重要的數據結構,例如字符串。對字符串的操作與對數組的操作大不相同,字符串的操作包括:計算長度、比

原创 llvm各種格式文件轉換圖

llvm主要具有以下幾種格式的文件,其轉換和關係圖圖中所示。 1) a.c,源代碼。 2) a.bc,llvm的字節碼的二進制形式。 3) a.ll,llvm字節碼的文本形式。 4) a.s,機器匯編碼表示的彙編文件。 5) a.out,

原创 迪傑斯特拉(Dijkstra)算法描述及其正確性證明

1. 算法描述 Dijkstra算法是圖論中常用的一個算法,用於計算圖中從一個指定點到其餘所有點的最短路徑。圖是有向圖,所有邊的權重爲非負數,圖1是滿足條件的一個簡單有向圖。 圖1 有向加權圖示例 在圖1中,A到D的最短路徑是A-->C

原创 計算排列組合的C++程序

n個不同對象的排列組合一共有n!種。例如,1, 2, 3, 4這幾個數可能的排列組合有1*2*3*4 = 24種。 1234, 1243, 1324, 1342, 1432, 1423 2134, 2143, 2314, 2341, 24

原创 整數的補碼錶示及其運算分析

研究整數的補碼錶示方法及其在運算中的原理。重點在於負數的補碼錶示在運算時的符號位溢出和其他位的進位變化情況及其所代表的意義。 點贊

原创 算法導論筆記(1):七種類型的問題

1排序 排序問題,就是把一個列表中的數據按照不減的順序重新組合。排序算法有若干重要的應用:1)搜索。在搜索算法中,常常需要輸入的數據是排好序的。2)排序在幾何問題和數據壓縮中也有很重要的應用。3)貪心法——一個重要的算法設計技術——中,也

原创 數據挖掘系列筆記(1):概述

1. 什麼是數據挖掘? 數據挖掘是從已知的數據集合中發現各種模型、概要和導出值的過程。通俗地說,數據挖掘就是要從大量的數據中尋找有價值的、非同尋常的新信息。它的兩個目標是預測和描述。預測是從已有的數據中推導出模型,從而對未來的情況進行預測