linux ld 鏈接器學習筆記

ld鏈接器筆記

1. 首先編寫一段匯編代碼

這里的匯編語法時 AT&T語法,是gcc原生支持的語法,底層使用 gas(gnu assembler) 完成匯編,相較于 Intel x86語法, AT&T 語法要更加古老,因此大多數人更加偏向于使用 Intel 的語法. nasm 編譯器支持x86語法.自從2.10版本,Intel語法可以通過使用.intel_syntax指令增加支持

.global _start.text
_start:mov $1,%eax # 將立即數1放到eax寄存器中mov $2,%ebx # 將立即數2放到 ebx 寄存器中add %ebx,%eax # 將 ebx 與 eax相加,結果放到 eax 中
loop:jmp loop # 循環

2. 使用 gcc 命令進行編譯

Makefile 文件內容:

main.o: main.sgcc -m32 -c $< -o $@
# -m32 編譯為32位代碼
# -c 執行編譯和匯編,但不執行鏈接
# -o 指定輸出文件名稱
# -E 執行預處理,但不執行編譯,匯編和鏈接
# -S 只執行編譯,但不執行匯編和鏈接
#  -shared 創建一個共享庫,格式.so

3. 使用 ld 執行鏈接

main: main.old -m elf_i386 main.o
# -m elf_i386 指定鏈接格式,這里指定為 elf 格式(linux中二進制格式)
# -o 指定輸出文件名稱
# ld 可以指定配置文件 map.lds,按照規格進行配置可以

4. 使用 gdb 執行輸出

gdb main
# 開啟圖形界面
tui enable
# 打開匯編窗口
lay asm
# 打開寄存器窗口
lay reg
# 開始執行程序
starti
# 步進執行程序
si
# 之后可以通過回車執行上一步執行的命令

ld鏈接器筆記

1. 首先編寫一段匯編代碼

這里的匯編語法時 AT&T語法,是gcc原生支持的語法,底層使用 gas(gnu assembler) 完成匯編,相較于 Intel x86語法, AT&T 語法要更加古老,因此大多數人更加偏向于使用 Intel 的語法. nasm 編譯器支持x86語法.自從2.10版本,Intel語法可以通過使用.intel_syntax指令使用

.global _start.text
_start:mov $1,%eax # 將立即數1放到eax寄存器中mov $2,%ebx # 將立即數2放到 ebx 寄存器中add %ebx,%eax # 將 ebx 與 eax相加,結果放到 eax 中
loop:jmp loop # 循環

2. 使用 gcc 命令進行編譯

Makefile 文件內容:

main.o: main.sgcc -m32 -c $< -o $@
# -m32 編譯為32位代碼
# -c 執行編譯和匯編,但不執行鏈接
# -o 指定輸出文件名稱
# -E 執行預處理,但不執行編譯,匯編和鏈接
# -S 只執行編譯,但不執行匯編和鏈接
#  -shared 創建一個共享庫,格式.so

3. 使用 ld 執行鏈接

Makefile 文件內容:

main: main.old -m elf_i386 main.o
# -m elf_i386 指定鏈接格式,這里指定為 elf 格式(linux中二進制格式)
# -o 指定輸出文件名稱
# ld 可以指定配置文件 map.lds,按照規格進行配置可以

4. 使用 gdb 執行輸出

gdb main
# 開啟圖形界面
tui enable
# 打開匯編窗口
lay asm
# 打開寄存器窗口
lay reg
# 開始執行程序
starti
# 步進執行程序
si
# 之后可以通過回車執行上一步執行的命令

在這里插入圖片描述

參考資料

xv6操作系統實踐

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 事務的底層原理和 MVCC(二)

7.2. undo 日志 7.2.1. 事務回滾的需求 我們說過事務需要保證原子性&#xff0c;也就是事務中的操作要么全部完成&#xff0c;要么什么也不做。但是偏偏有時候事務執行到一半會出現一些情況&#xff0c;比如&#xff1a; 情況一&#xff1a;事務執行過程中可能遇到各種錯誤&a…

ORB-SLAM3在windows11下的編譯使用

01 寫在前面 近期在學習SLAM&#xff0c;想部署一下ORB-SLAM3&#xff0c;但是自己電腦是win11系統&#xff0c;因此就想著在win11上部署一下。但是網上看了一些教程&#xff0c;有一些博客&#xff0c;但是可能不適合我這種情況把&#xff0c;就很糾結。先說下結果&#xff0…

【python基礎(三)】操作列表:for循環、正確縮進、切片的使用、元組

文章目錄 一. 遍歷整個列表1. 在for循環中執行更多操作2. 在for循環結束后執行一些操作 二. 避免縮進錯誤三. 創建數值列表1. 使用函數range()2. 使用range()創建數字列表3. 指定步長。4. 對數字列表執行簡單的統計計算5. 列表解析 五. 使用列表的一部分-切片1. 切片2. 遍歷切片…

【并發編程】ThreadLocal詳解與原理

&#x1f4eb;作者簡介&#xff1a;小明Java問道之路&#xff0c;2022年度博客之星全國TOP3&#xff0c;專注于后端、中間件、計算機底層、架構設計演進與穩定性建設優化&#xff0c;文章內容兼具廣度、深度、大廠技術方案&#xff0c;對待技術喜歡推理加驗證&#xff0c;就職于…

【電路筆記】-電流源

電流源 文章目錄 電流源1、概述1.1 理想電流源1.2 實際電流源1.3 連接規則 2、依賴電流2.1 壓控電流源2.2 電流控制電流源 3、總結 本文為前面文章 電壓源的延續&#xff0c;我們將在本文介紹電流源。 與電壓源的情況類似&#xff0c;我們將首先介紹理想電流源的概念&#xff…

MySQL 8.2 Command Line Client打開時一閃而過閃退問題

MySQL8.2安裝成功后&#xff0c;發現打開MySQL 8.0 Command Line Client時出現一閃而過&#xff0c;打不開的情況。 解決方案&#xff1a; 1、打開MySQL 8.2 Command Line Client文件位置 2、右鍵選擇屬性 3、復制它的目標 4、我復制下來的目標路徑是這樣的&#xff0c;"…

關于 Docker

關于 Docker 1. 術語Docker Enginedockerd&#xff08;Docker daemon&#xff09;containerdOCI (Open Container Initiative)runcDocker shimCRI (Container Runtime Interface)CRI-O 2. 容器啟動過程在 Linux 中的實現daemon 的作用 Docker 是個劃時代的開源項目&#xff0c;…

[計算機網絡實驗]頭歌 實驗二 以太網幀、IP報文分析(含部分分析)

目錄 第1關&#xff1a;Wireshark基本使用入門 【實驗目的】 【實驗環境】 【本地主機、平臺虛擬機之間數據傳遞】 wireshark基本用法】 1、wireshark主界面 2、抓取分組操作 3、Wireshark窗口功能 4、篩選分組操作 【實驗操作】 ?編輯 第2關&#xff1a;Ethernet幀…

編程語言發展史:C++語言的發展和應用

預計更新 第一部分&#xff1a;早期編程語言 1.1布爾代數和機器語言 1.2匯編語言的出現和發展 1.3高級語言的興起 第二部分&#xff1a;主流編程語言 1.1 C語言的誕生及其影響 1.2 C語言的發展和應用 1.3 Java語言的出現和發展 1.4 Python語言的興起和特點 1.5 JavaScript語言…

基于Towers of Binary Fields的succinct arguments

1. 引言 Ulvetanna團隊Benjamin E. Diamond和Jim Posen 2023年論文《Succinct Arguments over Towers of Binary Fields》&#xff0c;開源代碼見&#xff1a; https://github.com/recmo/binius&#xff08;Rust Sage&#xff09;【基于plonky3等庫】 在該論文中&#xff1…

Apache POI簡介

三十二、Apache POI 32.1 介紹 Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。簡單來說就是&#xff0c;我們可以使用POI在Java程序中對Miscrosoft Office各種文件進行讀寫操作。 一般情況下&#xff0c;POI都是用于操作Excel文件。 Apache POI 的應用場…

基于區域劃分的GaN HEMT 準物理大信號模型

GaN HEMT器件的大信號等效電路模型分為經驗基模型和物理基模型。經驗基模型具有較高精度但參數提取困難&#xff0c;特別在GaN HEMT器件工藝不穩定的情況下不易應用。相比之下&#xff0c;物理基模型從器件工作機理出發&#xff0c;參數提取相對方便&#xff0c;且更容易更新和…

火山引擎 ByteHouse 的增強型數據導入技術實踐

作為企業數字化建設的必備要素&#xff0c;易用的數據引擎能幫助企業提升數據使用效率&#xff0c;更好提升數據應用價值&#xff0c;夯實數字化建設基礎。 數據導入是衡量OLAP引擎性能及易用性的重要標準之一&#xff0c;高效的數據導入能力能夠加速數據實時處理和分析的效率。…

Sa-Token 整合Java17和SpringBoot

目錄 前言引入項目開啟登錄認證路由攔截鑒權解決兼容問題總結 前言 之前無意中發現Sa-Token權限認證框架&#xff0c;項目十分好用。 項目地址&#xff1a; https://github.com/dromara/sa-token 官網地址&#xff1a; https://sa-token.cc/doc.html#/start/example 我的個人…

如何輕松應對企業網絡管理挑戰,釋放網絡靈活性

企業在日常經營中&#xff0c;越來越依賴于云應用程序&#xff0c;分散的團隊和統一通信。這些變化使得保持網絡連接性不僅是必要的&#xff0c;而且對任務的成功完成至關重要。 傳統的廣域網&#xff08;WAN&#xff09;并不總能適應這些挑戰&#xff0c;因為它們往往無法提供…

不停的挖掘硬盤的最大潛能

從 NAS 上退休的硬盤被用在了監控的存儲上了。 隨著硬盤使用壽命的接近尾聲&#xff0c;感覺就是從高附加值數據到低附加值數據上。監控數據只會保留那么幾個月的時間&#xff0c;很多時候都會被覆蓋重新寫入。 有人問為什么監控數據不保留幾年的&#xff0c;那是因為監控數據…

java_函數式接口

文章目錄 一、什么是函數式接口二、四大核心函數式接口三、使用舉例 一、什么是函數式接口 如果一個接口只有一個抽象方法&#xff0c;那么該接口就是一個函數式接口函數式接口的實例可以通過 lambda 表達式、方法引用或者構造方法引用來創建如果我們在某個接口上聲明了 Funct…

【Unity入門】鼠標輸入和鍵盤輸入

Unity的Input類提供了許多監聽用戶輸入的方法&#xff0c;比如我們常見的鼠標&#xff0c;鍵盤&#xff0c;手柄等。我們可以用Input類的接口來獲取用戶的輸入信息 一、監聽鼠標輸入 GetMouseButtonUp 、GetMouseButtonDown、GetMouseButton input.GetMouseButtonDown和 inp…

從mysql源碼編譯出相應的庫和可執行文件及搭建mysql服務端

目錄 1. 問題的提出 2. 源碼下載 3. 升級或安裝某些前置軟件 3.1. 升級CMake 3.2. 升級gcc、g 4. 安裝依賴庫 4.1. 安裝OpenSSL 4.2. 安裝Curses 4.3. 安裝pkg-config 5. 編譯、安裝 6. 編譯結果、配置 7. 編譯錯誤處理 7.1. 錯誤1 7.2. 錯誤2 8. 搭建mysql數…

VMware三種網絡模式

橋接模式 NAT(網絡地址轉換模式) Host-Only(僅主機模式) 參考&#xff1a; vmware虛擬機三種網絡模式 - 知乎 (zhihu.com)