原创 第二章 8086/8088尋址和指令系統

文章目錄2.1 8086/8088寄存器組cpu寄存器標誌寄存器2.2 存儲分段和地址的形成存儲單元的地址和內容存儲器的分段物理地址的形成段寄存器的引用8086/8088的尋址方式立即尋址方式寄存器尋址方式直接尋址方式寄存器間接尋

原创 AT&T彙編操作文件

文章目錄相關的系統調用打開關閉文件向文件寫入內容讀取文件內存映射文件 相關的系統調用 系統調用 系統調用值 描述 open 5 打開文件 read 3 讀取文件 write 4 寫入文件 close 6

原创 編譯器如何代碼優化

文章目錄編譯器代碼優化優化的訣竅 編譯器代碼優化 GNU編譯器的優化等級 -O 基本的優化 -fdefer-pop 默認方法返回時,會將輸入參數出棧,這個優化可以將輸入參數在棧上累計,並通過一個命令一次清空所有棧上數據 -f

原创 go語言獲得linux下網卡上行與下行流量

linux系統下/proc/net/dev存儲網絡設備的統計信息 如上圖所示: 第一列: 網卡名 第二列: 對應網卡接收字節數 第九列: 對應網卡發送字節數   通過以上信息,我們就可以計算出網卡的上行與下行的流量情況,代碼實現如下:

原创 彙編語言中的系統調用

linux內核 內核組成 內存管理 /proc/meminfo 可以查看物理內存以及交換區大小 ipcs -m 可以查看共享內存使用情況 設備管理 插入設備驅動代碼 將驅動代碼編譯進內核代碼 將驅動代碼插入到運行的

原创 彙編中的字符串

移動字符串 MOVS 指令 子指令 MOVSB 移動一個字節 MOVSW 移動兩個字節 MOVSL 移動4個字節 說明 默認源操作數在ESI,目的操作數在EDI 設置EDI的地址 movl $output, %e

原创 高級的數學方法

FPU環境 FPU 寄存器棧 8個80位的數據寄存器(R0~R7) 特點 不能通過名字訪問 寄存器是環形的 16位的狀態寄存器 狀態位 狀態位 描述 0 不合法的操作 1 不規範化的操

原创 彙編基本的數學運算

整數運算 加法 加法指令 add source, destination 示例 # addtest1.s - An example of the ADD instruction .section .data data:

原创 彙編中的數字

數字類型 無符號整數 有符號整數 二進制編碼十進制 壓縮二進制編碼十進制 單精度浮點數 雙精度浮點數 雙擴展浮點數 SIMD 擴展類型 64位壓縮整數 128位壓縮整數 128位壓縮單精度浮點數 128位壓縮雙精度浮點數

原创 程序流程控制

指令指針 無條件跳轉 Jumps 格式 jmp location 分類 short jump (offset less than 128 bytes) Near jump Far jump (jump to another

原创 移動數據

定義數據 數據段 .data 和 .rodata 數據類型: * ascii 字符串 * asciz 0結束的字符串 * byte 字節值 * double 雙精度浮點數 * float 單精度浮點數 * int 32位整數 *

原创 IA-32平臺

IA-32 平臺 核心部件 處理器 控制單元 從內存中取指 對指令解碼 從內存中取指令需要的數據 存運算結果 執行單元 簡單整數的運算 複雜整數的運算 浮點數運算 寄存器 普通寄存器(8個32位) EAX 存

原创 彙編語言

和其他語言不一樣,彙編語言沒有統一的編譯器,彙編語言的格式隨着編譯的不同而不同,因此瞭解什麼是彙編語言是學習彙編語言的第一道門檻。 首先,我們需要知道彙編語言爲什麼出現,爲了回答這個問題,我們就不得不聊一聊處理器指令。 處理器

原创 go語言-數獨求解

package main import ( "container/list" "fmt" ) var ( ROWCOUNT = 9 ) //每一步的數據 type stepData struct { x int y

原创 模板方法模式

提供算法的基本骨架,具體實現延遲到調用 public abstract class BankTemplate {//模板方法 protected void before(){ System.out.println("get num