Time of Update: 2018-12-03
目前很多開源基於x86處理器環境的C/C++,Objective-C/C++編譯器所帶的彙編器使用AT&T格式。AT&T彙編針對x86指令集與其它處理器(比如ARM、Blackfin等)有所不同,它與Intel自訂的彙編格式有比較大的偏差。GCC的彙編器能支援Intel文法特性,可以參考我前面的博文來獲悉如何使用。不過對於最新的LLVM2.0,又開始棄用Intel文法特性了。因此不管怎麼說瞭解AT&T彙編文法還是有些好處的,呵呵。 首先,AT&T彙編在對於儲存空間
Time of Update: 2018-12-03
我們之前提到了複合過程,講解了Scheme中複合過程如何定義。但是,我們之前的過程的定義都是比較簡單的,甚至沒有用到我們在C/C++中所謂的局部變數。下面我們將研究一下Scheme中的過程對全域變數、局部變數的訪問情況。(註:這裡會將過程(Procedure)和函數(Function)這兩個概念混用,我們後面會講到Lambda,其實Lambda是真正意義上的函數) 在Scheme中,我們在一個過程中可以訪問一個全域變數:(define (func x) (+ x g_var));Value:
Time of Update: 2018-12-03
整體的問題整體辦——ARP病毒的優勢、軟肋 這事還得說到好幾天前,自從搬機房之後一直持續好長一段時間不能上網,經過勘察,發現時交換器有問題,於是換了一個交換器。這下可以上網了吧,結果依然不樂觀,可以上了,但是只能是偶爾,偶爾運氣好(歸結到“運氣”是一個相當錯誤的看法)極個別的同學可以上得去網,但是網速超慢,並且經常掉線。 在區域網路內上過網或是管理過區域網路的人應該都知道這很可能是ARP病毒攻擊的現象。經過再次勘察,果然就是,區域網路內ARP資料包發送量嚴重的多。
Time of Update: 2018-12-03
Tor系統中,主機的身份包括有這幾種:Client,Bridge Server,Relay Server,Directory Server。 當然,有的時候一台主機是可以身兼數個身份,提供不同的服務或擷取服務。 我們從最簡單的用戶端配置的Tor來進行分析,事先瞭解整個Tor系統的執行規程,之後再具體分析其他身份時候的不同操作,從而加快瞭解系統的速度。此處要說明的是,由於筆者對Windows的編程不甚瞭解,暫時就去除源碼中所有為了讓Tor系統具有誇平台性的Windows代碼部分。1.
Time of Update: 2018-12-03
Intel 64和IA-32架構支援Cache、翻譯後備緩衝(TLB)以及一個用於指令和資料的臨時片上(和外部)儲存的儲存緩衝。(圖11-1展示了奔騰4和Intel至強處理器的Cache、TLB和儲存緩衝的安排)。表11-1展示了為奔騰4、Intel至強、P6家族、和奔騰處理器的這些Cache和緩衝的特徵。這些單元的大小和特徵是機器特定的,並且在處理器的未來版本中可能會變。CPUID指令返回Cache和緩衝的大小和特徵。 Intel
Time of Update: 2018-12-03
以下代碼在基於如下環境中編寫和測試的:編譯器:Apple LLVM2.0(相容GNU99),Objective-C作業系統:Mac OS X Snow Leopard產生程式:64位測試環境:Mac Mini,CPU:2.00GHz,Intel Core2 Duo P7350; 記憶體:1GB DDR3;L2 Cache:3MB //// main.m// math_test//// Created by Zenny Chen on 5/18/11.// Copyright 201
Time of Update: 2018-12-03
咋一看標題,你很有可能會不屑一顧。本人向來不願意在自己僅有的那塊部落格空間裡放一些被談得發爛的東西。在寫這篇文章之前,我還特地地Google了一下,沒發現與此相關的內容。這裡將討論關於C/C++中sizeof的一個不怎麼為人所知的東西。 請先看下列代碼:#include <stdio.h>static char dummy(void){ puts("Hello, world!"); return '/0';}int main(void){ printf("The
Time of Update: 2018-12-03
表2.5到表2.8概括了可被一個在一個R700程式中的單個線程所訪問的R700程式狀態的程式員的視點。 表不包括:1、由R700硬體專門維護的狀態,諸如內部迴圈控制寄存器2、僅對主機軟體可訪問的狀態,諸如配置寄存器,或3、對許多執行線程的狀態的複製 表2.5到2.8中的列頭具有以下意思:1、被R700軟體訪問——被執行在R700處理器上的軟體,可讀(R),可寫(W),或可讀寫(R/W)。2、被主機軟體訪問——被執行在主機處理器上的軟體,可讀(R),可寫(W),或可讀寫(R/W)。表並不包括狀態物
Time of Update: 2018-12-03
經常在哪殺毒軟體的介紹中看到什麼什麼殺毒引擎,在網上查了一下。記下來:就是用殺毒軟體本身帶的病毒庫(經常會自動升級),與系統上的檔案上的某些特徵碼進行對比,有相同的就是病毒。“簡單點說就是殺毒軟體! 掃描引擎是殺毒軟體的主要部分,是殺毒軟體用來搜查電腦中病毒的程式。病毒庫裡面有病毒的“標本”,掃描引擎在掃描時就是用病毒庫裡的標本和你電腦中的所有檔案進行“對照”,如果符合標本的特徵,那麼掃描到的這個檔案就是病毒,就進行殺毒。”————摘自百度問答。
Time of Update: 2018-12-03
這個章節選自Intel官方文檔,是由本人親自翻譯的。 這裡先註明一下,以下所碰到的英文單詞Cache,如果C是大寫的,即Cache,表示名詞——高速緩衝儲存空間;如果c是小寫,即cache,表示動詞——表示將資料快存到某個高速緩衝儲存空間中 Intel
Time of Update: 2018-12-03
不知道你用不用隨身碟,儲存卡。不知道你有沒有遇過下面的情況。本來想在網上查一下關於這個病毒的資料,可惜查不到。那我就根據自己的經驗說一下吧。同名檔案夾病毒,能夠感染系統中的檔案夾,其方式為:將原有檔案隱藏,讓後產生一個同名的檔案夾,尾碼為“.exe”。你要是開啟它,可能又感染其它的病毒;極為頻繁的是,隨身碟裡經常會中這種病毒,並且也成為其傳染的主要途徑。解決方案:用殺毒軟體殺,殺的時候不用擔心正常的檔案被刪除,因為那個檔案已經被隱藏了。殺完毒你發現找不到原來的檔案了,不用擔心。①。用資料恢複工具
Time of Update: 2018-12-03
OpenGL是一個用於話圖形的API,因此,OpenGL的首要目的就是將來自一個應用程式所提供的資料變換為能在顯示螢幕上看得到的東西。這個過程通常被引用為繪製(RENDERING)。一般,這個過程由專門設計的硬體進行加速,但OpenGL流水線的某些或所有操作可以被一個運行在CPU上的一個軟體實現執行。OpenGL實現如何在硬體和軟體之間進行分工對使用者而言是透明的(無需知道的)。重要的是繪製的結果要遵從由OpenGL詳細說明書中定義的結果。 專用於畫圖形並維護顯示屏內容的硬體經常被稱為圖形加速器
Time of Update: 2018-12-03
R700家族的流處理器可以在不同執行線程之間共用資料。資料共用可以顯著地提升效能。圖2.1展示了對每個線程可用的儲存空間層級。 (譯者對圖的一些注釋:在一個SIMD中,圖上標有Processor 0到Processor 63;而在物理上,一個SIMD只有16個流處理器(Streaming Processor),因此這裡的Processor 0到Processor
Time of Update: 2018-12-03
在GCC以及LLVM編譯器中,預設情況下,如果使用彙編或在C/C++,Objective C/C++中內嵌彙編的話都是AT&T格式。儘管本人接觸GCC已經很久了,但對於AT&T彙編還是不忒習慣,尤其是寫SSE的時候很彆扭,呵呵。因此如果能寫Intel格式彙編的話就會非常舒服。下面提供此方法——(註:此方法已經在Apple LLVM1.6編譯器下成功通過)int main(int argc, const char * argv[]){ __asm__
Time of Update: 2018-12-03
對於作業系統核心有些瞭解的朋友應該對DSR不會感到陌生——Deferred Interrupt Service Routine,即延遲的插斷服務常式。 對於一些操作較複雜、耗時的操作我們往往想將它從插斷服務常式中拿出來,放在外面完成。這樣可以加快中斷回應時間,對於一些緊迫的事件處理則顯得更為重要。因此應該提供一個DSR這樣的機制。這個在Windows和Linux中均有體現。 下面我將談談在Blackfin DSP處理器系列中對DSR的一種處理方法。
Time of Update: 2018-12-03
Intel 64和IA-32架構提供了各種用於控制資料和指令的cache的機制,以及為控制在處理器、Cache和儲存空間之間讀寫次序的機制。這些機制可以被劃分為兩組: 1、Cache控制寄存器和位元——Intel 64和IA-32架構定義了控制寄存器內的若干個專用寄存器和各個位,以及控制L1、L2和L3 Cache中的cache系統儲存空間位置的頁和目錄表條目。這些機制控制了實體儲存體器地區的虛擬儲存空間頁的cache。 2、Cache控制和儲存空間次序指令——Intel
Time of Update: 2018-12-03
Main檔案是Tor系統的主要執行函數所處檔案,內容偏多,但是較於其他底層處理函數所在的檔案,也算較少。所以這裡做簡要的分析,其中刪去很多不常見的,不重要的函數,大家可以自行在源檔案內部查看。1. 全域變數 全域變數在檔案頭部定義,每個全域變數都已經有比較詳盡的英文分析和解釋,這裡再做簡單的羅列。 1)系統(先前)已讀與已寫位元組數以及用於流量控制的令牌桶全域變數;(先前與當前已讀寫位元組數的區別與refill回呼函數相關) 令牌桶用於控制整個系統的流量,經過初始化,減少,增加等操作(
Time of Update: 2018-12-03
在PC處理器中,往往沒有像嵌入式系統那樣含有一塊多核共用的快取(一般是SRAM)。也就是說我們在PC處理器的多核共用變數都是統一被映射到記憶體(DDR)中去的。那麼這就會導致一系列的問題。首先,由於每個核都有自己的獨立的L1 Cache(包括資料和指令),而多個核共用一個L2 Cache,以及更高層級的Cache。那麼在某一個核中對一個多核共用變數做讀寫操作的話,若採用一般指令進行寫,那麼這變數的值僅僅會在那個核的L1
Time of Update: 2018-12-03
Intel x87 FPU專門用於執行標量浮點計算,可以對單精確度浮點(32位)、雙精確度浮點(64位)以及擴充雙精確度浮點(80位)進行計算,並順從IEEE754標準。 x87 FPU可以工作在32位相容模式下以及64位元模式下,在這兩種下,FPU的資料寄存器的個數都一樣,只有8個。對x87 FPU的資料寄存器的訪問方式與一般的寄存器有所不同,它是棧式訪問。你通過FLD指令把外部資料搬到x87 FPU的資料寄存器中時,那麼x87
Time of Update: 2018-12-03
最近我看見有人問過這個問題。在此我想表達一下自己的觀點。 根據物件導向中關於繼承這個概念——子類繼承父類所有的屬性和方法。那麼既然是所有的那麼本人認為也應當也包括建構函式(方法)。