原创 X86-64和ARM64用戶棧的結構 (5) --- mian()函數和子函數之間的棧
main函數及其子函數之間的棧 1 工具及實驗程序 本文的實驗在一個虛擬機中進行,虛擬機模擬的cpu是x86-64(Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz),運行的是64bit ubuntu,安裝
原创 const char **,char *const *,char ** const
1、告警 test_cpp.c #include <stdlib.h> #include <stdio.h> int main() { char c = 'c'; char *p = &c;
原创 X86-64和ARM64用戶棧的結構 (4) ---__libc_start_main到main
_start到__libc_start_main函數之間的棧 1、x86-64 X86-64的寄存器相對於X86有擴展,主要不同體現在: 通用寄存器:X86-64有16個64bit通用寄存器 狀態寄存器:1個64bit狀態寄存器RFLAG
原创 X86-64和ARM64用戶棧的結構 (2) ---進程用戶棧的初始化
用戶進程棧的初始化 在進程剛開始運行的時候,需要知道運行的環境和用戶傳遞給進程的參數,因此Linux在用戶進程運行前,將系統的環境變量和用戶給的參數保存到用戶虛擬地址空間的棧中,從棧基地址處開始存放。若排除棧基地址隨機化的影響,在Linux
原创 具有潛力的語言
所有人都聽說過“應該學好 C”,“Java 是 Web 開發者的首選”等等,它們幾乎成爲了真理。那麼問題來了,難道就沒有其他語言能擠走這些老傢伙,使他們不再受歡迎?還是說十年後我們還是依靠着不斷升級的 Objective C 和 PHP
原创 X86-64和ARM64用戶棧的結構 (0) ---目錄
X86-64和ARM64用戶棧的結構 (1) ---背景介紹 X86-64和ARM64用戶棧的結構 (2) ---進程用戶棧的初始化 X86-64和ARM64用戶棧的結構 (3) ---_start到main() X86-64和ARM6
原创 dentry與inode有什麼聯繫和區別
我們在進程中要怎樣去描述一個文件呢?我們用目錄項(dentry)和索引節點(inode)。它們的定義如下:struct dentry {struct inode *d_inode
原创 我的友情鏈接
51CTO博客開發
原创 除去文件中顯示的^M符號
除去文件中顯示的^M符號 背景 在windows下編輯的文件,在Linux下使用vim打開有時會出現^M符號。 原理 本節內容參考[1] vim被配置爲fileformat=unix,而你打開的文件都是dos格式的。unix格式的換行符爲0
原创 linux中VM虛擬內存區域及mmap方法實現
linux中VM虛擬內存區域及mmap方法實現 文件映射是虛存的中心概念, 文件映射一方面給用戶提供了一組措施, 好似用戶將文件映射到自己地址空間的某個部分, 使用簡單的內存訪問指令讀寫文件;另一方面, 它也可以用於內核的基本
原创 X86-64和ARM64用戶棧的結構 (3) ---_start到main
_start到main()函數之間的棧 1、x86-64 X86-64的寄存器相對於X86有擴展,主要不同體現在: 通用寄存器:X86-64有16個64bit通用寄存器 狀態寄存器:1個64bit狀態寄存器RFLAGS,僅僅低32bit被
原创 ARMv8 UAO PAN
PAN 背景介紹 作用 特權執行不能訪問用戶空間的memory UAO 背景介紹 作用
原创 vim 相關配置說明
顯示目錄樹插件NERDTree
原创 X86-64和ARM64用戶棧的結構 (4) --- mian()函數和子函數之間的棧
mian()函數和子函數之間的棧 待完善 x86-64 ARM64
原创 進程間通信--信號(進程間通信唯一的異步方式
進程間通信--信號(進程間通信唯一的異步方式) 原文地址:進程間通信--信號(進程間通信唯一的異步方式) 作者:Deem_passion一、信號的介紹 信號是在軟件層次上對中斷機制的一種模擬,是一種異步通信方式。信號可以直接進行用戶空間