因為想嘗試使用intel cpu的rdtsc指令來為程式計數,所以查閱了相關資料,嘗試後發現gcc下使用rdtsc指令不能獲得正確的結果,於是想看看c的**編譯成彙編的樣子:
gcc下得這樣: g++ -o main.s main.cpp -s
微軟的cl編譯器得這樣: cl.exe /fas main.cpp
gcc產生的彙編是at&t格式,微軟的是intel格式。從注釋的角度說,微軟的cl生成的彙編要貼心得多,原始碼和行號的資訊都在裡面,一目了然。
彙編當然是看不懂的了,比如cl中使用rdtsc,為什麼指令返回的結果存放在edx:eax中,最後還能作為函式的返回值?看來彙編的領域,我還是個純粹的白痴!!!進軍彙編,這是我未來的乙個方向。
ok,最後貼上可以同時在cl和gcc下使用的rdtsc呼叫的**:
///呼叫intel cpu指令rdtsc來獲得時間計數,便於得到**段的效能指標
///@return 64為無符號整形的cpu時鐘值
long
long
rdtsc()
...
彙編第一次作業
通過對彙編第一章的學習,我複習了以往的知識,同時也收穫到了一些新知識。這章主要講述了以下幾個內容 計算機程式語言的演進,組合語言源程式的組成,計算機硬體系統的基本結構以及記憶體位址空間。計算機程式語言經歷了從機器語言到組合語言再到高階語言的三個階段.機器語言就是一些0,1組成的數字,然後計算機將之轉...
彙編實踐課第一次作業
第一次 1.求正數,負數的絕對值和and個數和 2.兩數相加 3.求出數字的回文數 4.求出陣列最大值的下標 找正數 含0 和負數的個數和絕對值和 include irvine32.inc data array dd 12,34,56,12,34,9,0,3,0,5,3,5 len dd array...
我的第一次彙編作業
題目 基於8088 8086指令系統完成以下程式設計 1 只使用16位的暫存器,實現32位十六進製制數的加法運算 2 加數num1和被加數num2請預先在資料段定義並初始化 3 加法結果請儲存至資料段預先定義的變數result 4 請將程式書寫完整 5 盡量上機除錯通過 本程式將利用16bit數相加...