第0章Linux环境到内核基础知识
#include<stdio.h>int main(void){printf("hello world\n");return 0;}
ELF Header:Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00Class: ELF64Data: 2's complement, little endianVersion: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: EXEC (Executable file)Machine: Advanced Micro Devices X86-64Version: 0x1Entry point address: 0x4003c0Start of program headers: 64 (bytes into file)Start of section headers: 2560 (bytes into file)Flags: 0x0Size of this header: 64 (bytes)Size of program headers: 56 (bytes)Number of program headers: 8Size of section headers: 64 (bytes)Number of section headers: 29Section header string table index: 26Section Headers:[Nr] Name Type Address OffsetSize EntSize Flags Link Info Align[ 0] NULL 0000000000000000 000000000000000000000000 0000000000000000 0 0 0[ 1] .interp PROGBITS 0000000000400200 00000200000000000000001c 0000000000000000 A 0 0 1[ 2] .note.ABI-tag NOTE 000000000040021c 0000021c0000000000000020 0000000000000000 A 0 0 4[ 3] .hash HASH 0000000000400240 000002400000000000000024 0000000000000004 A 4 0 8[ 4] .dynsym DYNSYM 0000000000400268 000002680000000000000060 0000000000000018 A 5 1 8[ 5] .dynstr STRTAB 00000000004002c8 000002c8000000000000003d 0000000000000000 A 0 0 1[ 6] .gnu.version VERSYM 0000000000400306 000003060000000000000008 0000000000000002 A 4 0 2[ 7] .gnu.version_r VERNEED 0000000000400310 000003100000000000000020 0000000000000000 A 5 1 8[ 8] .rela.dyn RELA 0000000000400330 000003300000000000000018 0000000000000018 A 4 0 8[ 9] .rela.plt RELA 0000000000400348 000003480000000000000030 0000000000000018 A 4 11 8[10] .init PROGBITS 0000000000400378 000003780000000000000018 0000000000000000 AX 0 0 4[11] .plt PROGBITS 0000000000400390 000003900000000000000030 0000000000000010 AX 0 0 4[12] .text PROGBITS 00000000004003c0 000003c00000000000000258 0000000000000000 AX 0 0 16[13] .fini PROGBITS 0000000000400618 00000618000000000000000e 0000000000000000 AX 0 0 4[14] .rodata PROGBITS 0000000000400628 000006280000000000000010 0000000000000000 A 0 0 4[15] .eh_frame_hdr PROGBITS 0000000000400638 000006380000000000000024 0000000000000000 A 0 0 4[16] .eh_frame PROGBITS 0000000000400660 00000660000000000000007c 0000000000000000 A 0 0 8[17] .ctors PROGBITS 00000000006006e0 000006e00000000000000010 0000000000000000 WA 0 0 8[18] .dtors PROGBITS 00000000006006f0 000006f00000000000000010 0000000000000000 WA 0 0 8[19] .jcr PROGBITS 0000000000600700 000007000000000000000008 0000000000000000 WA 0 0 8[20] .dynamic DYNAMIC 0000000000600708 000007080000000000000190 0000000000000010 WA 5 0 8[21] .got PROGBITS 0000000000600898 000008980000000000000008 0000000000000008 WA 0 0 8[22] .got.plt PROGBITS 00000000006008a0 000008a00000000000000028 0000000000000008 WA 0 0 8[23] .data PROGBITS 00000000006008c8 000008c80000000000000010 0000000000000000 WA 0 0 8[24] .bss NOBITS 00000000006008d8 000008d80000000000000010 0000000000000000 WA 0 0 8[25] .comment PROGBITS 0000000000000000 000008d8000000000000003e 0000000000000001 MS 0 0 1[26] .shstrtab STRTAB 0000000000000000 0000091600000000000000e7 0000000000000000 0 0 1[27] .symtab SYMTAB 0000000000000000 000011400000000000000660 0000000000000018 28 47 8[28] .strtab STRTAB 0000000000000000 000017a0000000000000025b 0000000000000000 0 0 1
execve("./hello", ["./hello"], [/* 41 vars */]) = 0brk(0) = 0x151b000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733ef000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)open("/etc/ld.so.cache", O_RDONLY) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=62458, ...}) = 0mmap(NULL, 62458, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f30733df000close(3)= 0open("/lib64/libc.so.6", O_RDONLY) = 3 //加载c语言库read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\356!\2478\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=1928936, ...}) = 0mmap(0x38a7200000, 3750184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x38a7200000mprotect(0x38a738a000, 2097152, PROT_NONE) = 0mmap(0x38a758a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x38a758a000mmap(0x38a7590000, 14632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x38a7590000close(3) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733de000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733dd000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733dc000arch_prctl(ARCH_SET_FS, 0x7f30733dd700) = 0mprotect(0x38a758a000, 16384, PROT_READ) = 0mprotect(0x38a701f000, 4096, PROT_READ) = 0munmap(0x7f30733df000, 62458) = 0fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733ee000write(1, "hello world\n", 12hello world) = 12exit_group(0) = ?+++ exited with 0 +++
int __open_nocancel(const char *file,int oflag,...){int mode=0;if(oflagO_CREAT){va_list arg;va_start(arg,oflag);mode=va_arg(arg,int);va_end(arg);}//系统调用编号return INLINE_SYSCALL(openat,4,AT_FDCWD,file,oflag,mode);}
# define INTERNAL_SYSCALL(name, err, nr, args...) \({ \register unsigned int resultvar; \EXTRAVAR_##nr \asm volatile ( \LOADARGS_##nr \"movl %1, %%eax\n\t" \"int $0x80\n\t" \RESTOREARGS_##nr \: "=a" (resultvar) \: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \(int) resultvar; })
第0章Linux环境到内核基础知识的更多相关文章
- 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统
上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...
- 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
第38章 TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- 【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章 STM32H7的FMC总线基础知识和HA ...
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章 STM32H7的TIM定时器基础知识和H ...
- 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章 STM32H7的USART串口基础知识和 ...
- Windows内核基础知识-1-段寄存器
Windows内核基础知识-1-段寄存器 学过汇编的应该都知道段寄存器,在Windows里段寄存器有很多,之前可能只接触了ds数据段,cs 代码段这种,今天这个博客就介绍Windows一些比较常用的段 ...
- Windows内核基础知识-2-段描述符
Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...
随机推荐
- logging console not work
配置 log 信息传输到控制台 参考官网:https://docs.djangoproject.com/en/2.1/topics/logging/ By default, this config o ...
- 【转】PCA for opencv
对于PCA,一直都是有个概念,没有实际使用过,今天终于实际使用了一把,发现PCA还是挺神奇的. 在OPENCV中使用PCA非常简单,只要几条语句就可以了. 1.初始化数据 //每一行表示一个样本 Cv ...
- 【动态规划】bzoj1705: [Usaco2007 Nov]Telephone Wire 架设电话线
可能是一类dp的通用优化 Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设 ...
- Qt的由来和发展
一.Qt的由来 Haavard Nord 和Eirik Chambe-Eng于1991年开始开发"Qt",1994年3月4日创立公司,早名为Quasar Technologies, ...
- MYSQL不能显示中文字,显示错误“ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89'”
或者建表时带上编码utf8 CREATE TABLE `students`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR( ...
- SEO 优化
1.什么是SEO优化: 简单的来说就是了解搜索引擎的排名规则,投机所好,让我们的网站在搜索引擎上得到靠前的排名,获取更多流量的一种方式. 2.SEO优化-衡量标准 关键词的排名--核心关键词的效果 收 ...
- drf 视图功能
视图 drf提供的视图功能 自己的第一次封装 #一个功能写成一个类,方便组合,只要继承它就可以有这个功能 #将功能都写在一个类中,可控性就会变差 from book.myserializers imp ...
- HDU:4185-Oil Skimming
Oil Skimming Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Proble ...
- Java中的数据类型和引用
JAVA数据类型分primitive数据类型和引用数据类型. Java中的primitive数据类型分为四类八种.primitive也不知道怎么翻译比较贴切, 暂且叫他基本数据类型吧, 其实直接从英文 ...
- noip2017行记
前奏 写了所有的变量名在linux下测,结果发现并没什么用...听说将所有的变量加上下划线,加上自己的名字作为前缀.. lgj,“感觉今年有网络流,今年要立个flag”,zjr“你咋不上天儿” 在车上 ...