tag asm

標籤
貢獻7
75
08:18 AM · Oct 30 ,2025

@asm / 博客 RSS 訂閱

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(上)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的 NASM 彙編語言 重新編寫本章,以提升學習體驗。 如何編程計算兩個整數的和呢?恐怕無論使用

asm , 計算機基礎 , 計算機原理

收藏 評論

putao - sbi--sbi_remote_sfence

規範: Function Name SBI Version FID EID sbi_remote_fence_i 0.2 0 0x52464E43 清除所有目標HART的指令緩存 sbi_remote_sfence_vma 0.2 1 0x52464E43 使所有目標HA

asm , rust , risc-v , 引導

收藏 評論

putao - risc-v--多任務切換原理

rust 代碼實現。current_task_cx_ptr 當前任務是一段空的內存區域。 用來存放當前任務的寄存器環境。 fn run_next_task(self) { if let Some(next) = self.find_next_task() { let mut inner = self.inner.exclusive_access();

asm , rust , risc-v

收藏 評論

Aresxue - Java字節碼改寫之asm進階使用

在java世界裏,字節碼改寫 + 反射可以讓你變成“上帝”,你可以完成任何你想做的事情,而字節碼改寫中asm是當之無愧的老大哥,對字節碼認識不深的小夥伴可以看看我這篇文章 https://www.zhihu.com/question/7501915796/answer/61918375697 本文的目的是現有互聯網上asm的資料不夠體系和細緻,其和傳統java編程也非常的不一樣,使用時有很多需要注

asm , jvm , 字節碼 , JAVA

收藏 評論

Aresxue - 聊聊為什麼java會有這麼多的字節碼改寫方式(jdk/cglib/asm/javasist)?

字節碼改寫方式的多樣性主要源於不同的使用場景、需求和設計哲學。 以下兩個方面是比較重要的原因: https://www.zhihu.com/question/7501915796/answer/61918375697 學習和使用成本 精細化控制能力與性能需求 首先説一下jdk代理,它是在2000年5月發佈的jdk 1.3中引入的,這裏對jdk代理就不做過於詳細的介紹了,它的出現主要是為了提

cglib , asm , jvm , 字節碼 , JAVA

收藏 評論

vistart - 現代編譯器條件賦值優化:跨架構彙編分析

引言 在現代C/C++開發中,開發者經常面臨一個問題:if-else條件賦值與三元運算符在性能上是否存在差異?本文深入分析了最新版Clang和GCC編譯器在不同架構平台上的優化行為,通過彙編代碼對比揭示編譯器優化的本質。 驗證結果解讀 預期的彙編輸出 ARM64平台 (Apple Silicon) 優化前 (-O0) - 包含分支跳轉: conditional_assignment_if_else

asm , 編譯器 , 條件表達式 , 優化 , cpu

收藏 評論

putao - sbi--rustsbi解讀

sbi-rt :按照sbi規範制定的接口,寫的挺好的。這裏直接調用了彙編代碼 sbi-spect: sbi-rt 裏面用到一些常量 sbi-testing:測試 src: 不知道啥用。貌似某個學校寫的玩具,還有第幾章的字樣, 不能嚴謹一點嗎? 到這裏,還沒有看到具體的實現呢? rust-qemu 能給qemu虛擬機直接用的。 整體寫的過於麻煩了,寫的底層的也不是很容易,還要

asm , rust , risc-v , 引導

收藏 評論

putao - risc-v--sv39彙編實現

在 Sv39 模式下,虛擬地址是 39 位,分為三級頁表來管理: 第一級頁表(頁目錄):負責最高的 9 位虛擬地址。 第二級頁表(頁中間目錄):負責中間的 9 位虛擬地址。 第三級頁表(頁表):負責最低的 9 位虛擬地址。 9 位虛擬地址可以表示2的9次方=512個條目。 512條目×8字節/條目=4096字節=4KB 假設我們有一個頁表,包含多個條目,每個條目佔用 8 字節:

asm , risc-v

收藏 評論

codists - 《Programming from the Ground Up》閲讀筆記:p117-p146

《Programming from the Ground Up》學習第8天,p117-p146總結,總計30頁。 一、技術總結 1.共享函數用法示例 (1)不使用共享函數 linux.s: # filename:linux.s # system call numbers(按數字大小排列,方便查看) .equ SYS_READ, 0 .equ SYS_WRITE, 1 .equ SYS_OPEN,

asm , 編程語言

收藏 評論

hai_detto - 初學操作系統——寫顯存輸出字符

參考網上的教程也是弄明白了一點,這裏做個記錄吧。 採用Dosbox+編譯器模擬實模式下的操作系統 參考資料:https://blog.csdn.net/qq_43722079/article/details/107690205 參照事例代碼仿寫了自己的彙編程序 參考資料:https://www.cnblogs.com/bigdudu/articles/4072864.ht

asm , 操作系統

收藏 評論

putao - risc-v --全部的關鍵字

.ascii:插入一串不以零結尾的字符。 .asciz:插入一串以零結尾的字符。 .balign:在當前位置插入字節以使地址對齊到指定的字節邊界。 .byte:插入一個或多個字節值。 .data:轉到數據段,通常用於定義數據信息。 .define:通常用於定義宏或常量符號,但在不同彙編器中使用可能有所不同。 .double:插入一個或多個雙精度浮點數。 .

asm , risc-v

收藏 評論

putao - risc-v--sv39分頁

sv39分頁:虛擬地址只用了39位,所以才有這個名字 問題一: PTE的格式怎麼樣? 不同的模式格式都是一樣的嗎? 問題二: MMU需要什麼樣的數據,怎麼樣提前準備呢? 問題三: 怎麼配置一個虛擬地址到物理地址到映射呢? 問題四: 內存的場景的位操作是怎麼樣的呢? 問題五: cpu怎麼知道頁的大小呢? 在RISC-V架構中,無論是Sv32、Sv39還是Sv48模式,頁表條

asm , risc-v

收藏 評論

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(下)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的 NASM 彙編語言重新編寫本章,以提升學習體驗。 在 SASM 中查看寄存器和內存存儲單元

asm , 計算機基礎 , 計算機原理 , 源代碼

收藏 評論

da_miao_zi - 用匯編語言編寫計算兩整數之和的程序(中)

本文節選自《計算機是怎樣跑起來的(第2版)》第 3 章“體驗彙編語言”的草稿。在翻譯本章時,我們發現原書所使用的軟件僅提供日文界面,並且介紹的是主要用於日本計算機相關考試的 CASLⅡ 彙編語言,其通用性相對較低。為了讓內容更廣泛適用,並便於讀者實踐操作,與作者及編輯老師商議後,決定採用更為通用的NASM 彙編語言重新編寫本章,以提升學習體驗。 通過前面的學習(用匯編語言編寫計算兩整數之

編程 , asm , 計算機基礎 , 計算機原理

收藏 評論

codists - 《計算機組成及彙編語言原理》閲讀筆記:p178-p199

《計算機組成及彙編語言原理》學習第 14 天,p178-p199 總結,總計 22 頁。 一、技術總結 1.關於 end 的一點疑問 p178, For example, one instruction (BSWAP) swaps the end bytes in a 32-bit register (specified as an argument), a task that could be

asm

收藏 評論

putao - risc-v--sv39(rust版本)

這是一種面向對象的思想。 非常好!!! satp 虛擬地址 雖然虛擬地址是 64 位的,但在 Sv39 模式下,只使用前 39 位。最高的 25 位用於符號擴展,以確保地址的正確性。具體來説: 如果位 38 是 0,則虛擬地址的高位(位 63 到 39)應全部為 0。 如果位 38 是 1,則虛擬地址的高位(位 63 到 39)應全部為 1。 這樣可以確保虛擬

asm , rust , risc-v

收藏 評論

putao - risc-v 函數調用規範

RISC-V 的寄存器分為以下幾類: 臨時寄存器:t0-t6(x5-x7, x28-x31) 保存寄存器:s0-s11(x8, x9, x18-x27) 參數寄存器:a0-a7(x10-x17) 返回地址寄存器:ra(x1) 注意:不是返回值,call函數的時候的下一條指令 棧指針寄存器:sp(x2) 全局指針寄存器:gp(x3) 線程指針寄存器:tp(x

asm , risc-v

收藏 評論

putao - risc-v-- PMP寄存器

問題一:pmp怎麼配置呢? 問題二:什麼時候出發pmp的檢查呢? PMP 是 RISC-V 中用於實現物理內存保護的機制。它允許配置多個內存保護區域,並對每個區域設置訪問權限,以防止未授權的訪問。 PMP 的功能 訪問控制:PMP 可以限制對內存區域的讀、寫和執行訪問。 區域配置:PMP 支持定義多個內存區域,每個區域可以有不同的訪問權限。 特權級別:PMP 可以根據特權級

asm , risc-v

收藏 評論

putao - sbi--Hart 各種操作

各個狀態流轉的解釋 STARTED :HART 處於正常執行狀態。 轉移到STOP_PENDING狀態:當調用 sbi_hart_stop 之後,當前HART會請求停止。 STOP_PENDING: HART 正在停止過程中。 轉移到 STOPPED狀態: 當HART停止過程完成時。 轉移到 STARTED狀態: 如果停止過程被取消。 STOPPED : HART

asm , rust , risc-v , 引導

收藏 評論

da_miao_zi - Unix的催化劑·遊戲《太空旅行》代碼片段賞析:1.0要寫作“1;0200000;0”

1968 年,Ken Thompson 投入大量心血的項目被管理層終止,部門開始重組,開發環境一夜之間從“高速公路”變成了“泥濘小道”。想申請一台新機器繼續研發,被領導一口拒絕。可 Ken 並沒有因此停下手裏的活,還時刻惦記着那個親手編寫出來的宇宙飛行模擬遊戲:太空旅行(Space Travel)。 太空旅行(Space Travel)遊戲畫面 後來的故事,很多讀者或許已經聽過不止一次了。 Ke

asm , 歷史 , unix

收藏 評論

putao - risc-v--PLIC中斷原理

PLIC 硬件結構包括以下幾個主要部分: 優先級寄存器(Priority Registers):每個中斷源都有一個優先級寄存器,用於設置中斷的優先級。 掛起寄存器(Pending Registers):每個掛起寄存器包含32箇中斷源的掛起狀態。 中斷使能寄存器(Enable Registers):每個hart都有一組中斷使能寄存器,用於使能或禁用特定中斷源。 閾值寄存器(T

asm , risc-v

收藏 評論

codists - 《Programming from the Ground Up》閲讀筆記:p103-p116

《Programming from the Ground Up》學習第7天,p103-p116總結,總計14頁。 一、技術總結 1.讀寫文件 (1)linux.s linux.s: #file name:linux.s # system call numbers(按數字大小排列,方便查看) .equ SYS_READ, 0 .equ SYS_WRITE, 1 .equ SYS_OPEN, 2 .

asm , assembly

收藏 評論

putao - sbi--寄存器ID用法

macros.rs macro_rules! write_csr { ($csr_number:literal) = { /// Writes the CSR #[inline] #[allow(unused_variables)] unsafe fn _write(bits: usize) { mat

asm , rust , risc-v

收藏 評論

codists - 《Programming from the Ground Up》閲讀筆記:p19-p48

《Programming from the Ground Up》學習第2天,p19-p48總結,總計30頁。 一、技術總結 1.object file p20, An object file is code that is in the machine's language, but has not been completely put together。 之前在很多地方都看到object fi

asm

收藏 評論