原创 GNU彙編器——.syntax

目錄1 從一個彙編錯誤說起2 .syntax的用法參考文獻 1 從一個彙編錯誤說起 從u-boot移植了一些代碼,在編譯時GNU彙編器報告了一些錯誤: Error: bad instruction `movsne r3,r3,ls

原创 gcc的編譯選項總結

目錄前言1 常見的編譯選項2 不常見的編譯選項2.1 -x language2.2 -fno-xxx2.3 -ffreestanding3 ARM架構專有的編譯選項參考文獻 前言 本文用於記錄我在學習和工作中遇到的各種GCC選項,

原创 字符串匹配算法——KMP算法淺淺析

目錄1 從最簡單的想法開始2 利用模式串自身的特點來優化3 利用next數組優化串匹配4 構造next數組5 完整的程序6 參考文獻 1 從最簡單的想法開始 現有兩個字符串text、pattern,需要從text中查找是否存在一個

原创 GNU彙編器——.irp和.macro

目錄1 從一個彙編錯誤開始說起2 GNU彙編器的.irp3 GNU彙編器的.macro4 當.irp遇到.macro參考文獻 1 從一個彙編錯誤開始說起 最近從u-boot中摘了一段代碼出來(源於kernel),這段代碼作用是用軟

原创 2020中興捧月算法大賽迪傑斯特拉賽道初賽題解

目錄摘要1 程序中使用的數據結構1.1 幾個基本數據類型1.2 車道(Lane)1.3 道路(Road)1.4 站點(Station)1.5 貨物(Goods)1.6 系統資源(SystemResource)1.7 物流系統(Lo

原创 2020中興捧月算法大賽參賽總結

前言 年初因爲疫情的原因沒辦法返校,一直在家待到了5月下旬。期間,看到了學校羣裏有人宣傳2020年的中興算法賽,就去看了看幾個賽題。因爲參加過2019年華爲的軟挑,因此看到迪傑斯特拉賽道的賽題有種熟悉感,因此決定試一下這個賽道,沒

原创 Makefile的使用摘記

目錄前言1 Makefile的基本語法1.1 目標、依賴、命令1.2 make內建的變量1.2.1 概述1.2.2 具體的內建變量及其含義1.3 make內建的函數1.3.1 if函數1.3.2 subst函數1.3.3 pats

原创 移植u-boot-2019.10到jz2440

目錄前言1 u-boot簡介2 第一步——根據自己的硬件初步修改u-boot2.1 移植的不同硬件層次2.2 選擇合適的坯子2.3 將舊版本中支持SMDK2410的文件拷貝到新版u-boot2.3.1 拷貝s3c24x0目錄2.3

原创 多核處理器上的MMU和TLB

目錄1 對多核處理器以及進程、線程的困惑2 多核處理器上的MMU和TLB參考文獻 1 對多核處理器以及進程、線程的困惑 雖然不記得在哪個文獻上看到過,但確實記得看過類似的表述:對多核處理器,同一時間只能運行一個進程裏的多個線程。一

原创 淺析c程序中的屏障

目錄1 編譯屏障1.1 爲什麼需要編譯屏障1.2 編譯屏障會造成哪些影響2 內存屏障2.1 爲什麼需要內存屏障2.2 內存屏障會造成哪些影響3 總結參考文獻 1 編譯屏障 1.1 爲什麼需要編譯屏障 衆所周知,從c源文件到可執行程

原创 計算機系統基礎摘記——c語言數值常量的類型

目錄1 c編譯器怎麼確定數值常量的類型2 c語言數值常量的陷阱3 有符號數和無符號數在一起運算參考文獻 1 c編譯器怎麼確定數值常量的類型 首先明確一下這裏所說的數值常量指的是程序中的一個數字,比如: if (1 < 2) { }

原创 移植u-boot-2019.10到jz2440——修改程序以支持NorFlash

目錄前言1 NorFlash簡單介紹2 NorFlash的JEDEC標準和CFI標準3 u-boot怎麼獲取用戶NorFlash的信息3.1 initr_flash3.2 flash_init3.3 flash_detect_le

原创 Linux的異步通知

目錄前言1 概覽異步通知2 應用層使用異步通知3 驅動層支持異步通知3.1 響應應用層設置FASYNC——xxx_fasync3.1.1 fasync_helper3.1.2 fasync_add_entry3.1.3 fasyn

原创 搭建基於qemu的linux開發環境

目錄前言1 安裝並配置qemu1.1 安裝1.2 配置qemu的網絡2 搭建TFTP環境3 搭建NFS環境4 編譯u-boot5 編譯linux kernel6 使用busybox製作根文件系統6.1 製作過程6.2 測試7 在q

原创 linux kernel中的asm-offsets.c

1 在彙編中使用結構體 首先考慮一下結構體: struct test { int a; int b; } 這個結構體很簡單,只是用來舉例子。在c語言中,如果我們要訪問結構體中的某個成員,這非常容易: struct test