原创 [算法實現]基於分治的二維平面最近點對算法實現

摘要: 網上有很多關於分治方法求最近點對的討論,但是沒有完整的可運行代碼,本文主要對於該問題介紹一完整的可運行代碼, 供有興趣者參考。 正文: 作爲對比,我們也同時實現了最近點對的枚舉解法,具體的主函數如下: #include<stdi

原创 [代碼閱讀]gem5 classic cache初步(2)

下面的分析主要集中classic cache有關的文件: Cache.cc, cache.hh, cache_impl.hh,以及tag中的lru.cc,lru.hh等文件。   Lru.cc中的內容不復雜,我們先來分析,主要完成的功能是

原创 反彙編的應用2-debug

下面是從彙編級別來看指針的操作,查看因指針操作而導致的問題。 #include "stdafx.h" #include <stdlib.h> void allocate(int *p) { p = (int*)malloc(sizeo

原创 [原理分析]Linux下的棧溢出案例分析-GDB調試操練[1]

摘要: 本文主要演示linux平臺下的棧溢出,首先根據理論對示例代碼進行溢出攻擊;結果是溢出攻擊成立,但是與設想的有差別;然後採用GDB調試工具對發生的意外,進行深入的分析。 測試的平臺:1.  ubuntu 9;   gcc 4.4.1

原创 [原理分析]linux內核中的鏈表原理實踐[1]

摘要: 本文根據linux內核的鏈表定義,嘗試自己來完成相關的接口設計,並且構建測試用例,來體會下鏈表接口的用法。 正文: 首先來看下linux內核提供的鏈表接口大致如下: struct head_node{ struct head_

原创 轉載:碼途有道----基於系統觀的核心能力構建

轉載自:http://blog.sina.com.cn/s/blog_7d5a09f90102v341.html 有感於同學們在大學中如何學習計算機技術有些感概,將我書(老碼識途)中的序言整理了一下,並補充了一些後來的想法,比如什麼是

原创 基於java的貪喫蛇設計與實現

 基於java的貪喫蛇的設計與實現   界面的設計;包括: 蛇體本身; 界面; 貪喫蛇的控制:控制部件,控制蛇體,根據蛇體再去做界面更新; 蛇體模型作爲主要的數據結構刻畫貪喫蛇;而控制模塊主要接受來自鍵盤的

原创 反彙編的應用1-軟件破解

下面的案例主要介紹反彙編的使用價值,即在軟件加解密方面的應用,可以很好地體會到基本的彙編指令在實踐中的應用,也可以認識到Ollydbg在軟件調試過程中的威力。 選用的示例程序CRACKME.exe程序來自看雪論壇的“從零開始用ollydb

原创 關於棧和堆的定量分析

計算機系統中的堆和棧是跟程序員最密切的兩個概念。如果沒有棧和堆的概念,下面程序的錯誤就不知道其所以然。 #include <stdlib.h> int main(int argc, char* argv[]) { int a[10

原创 [代碼閱讀]gem5 classic cache初步(3)

下面對cache中的mem_port端的主要操作進行分析:   這裏我們把前一篇文章(初步2)中的trace圖作爲我們分析的“航海圖”。根據上述的動態航海圖,對於從mem端來的數據l2 cache首先調用MemSidePort::recv

原创 [硬件結構]爲什麼branch prediction和cache在硬件體系結構中這麼重要?

摘要: 本文主要通過簡單的量化計算的例子,來說明爲什麼硬件體系結構研究中branch prediction和cache是兩大 研究的主題。 基本概念介紹: 描述案例之前,我們簡單的介紹幾個概念: 1. CPI:cycle-per-ins

原创 c++類模板實例化驗證

摘要: 1. 首先通過PEview工具觀察一般的代碼編譯鏈接過程; 2. 通過PEview工具和IDA工具驗證類模板函數的實例化過程;   正文: 首先,看看下面的簡單代碼例子: 文件1,Main.cpp: ---------------

原创 [硬件結構]硬件體系結構中的緩存的定性與定量分析案例

摘要: 本文主要就硬件體系結構中,cache對處理器性能的影響給出定量統計的例子,並且由定量的結果如何推導出定性的結論。 問題描述: 假設某順序執行的處理器,其平均缺失率爲2%,平均每條指令要訪問存儲器1.5次,cache缺失代價爲10

原创 函數指針調用和直接函數調用的反彙編對比

本文主要從x86彙編一級來查看函數調用和函數指針調用函數的差別。 具體看如下的兩個函數: void show() { printf("success\n"); } void showData(int a) { printf("suc