第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地址最大能寻 ...
随机推荐
- iOS 打印系统字体
NSArray * array = [UIFont familyNames]; for( NSString *familyName in array ){ printf( "Family: ...
- iOS 绘制1像素的线
一.Point Vs Pixel iOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量.系统在实际渲染到设置时会帮助我们处理Point到P ...
- NOIP模拟赛 无线通讯网
[题目描述] 国防部计划用无线网络连接若干个边防哨所.2种不同的通讯技术用来搭建无线网络:每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...
- 【NOIP2017提高A组冲刺11.8】好文章
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> us ...
- Pandas中数据的处理
有两种丢失数据 ——None ——np.nan(NaN) None是python自带的,其类型为python object.因此,None不能参与到任何计算中 Object类型的运算比int类型的运算 ...
- 将远程分支拷贝到本地,并更新代码push到原分支
第一步:git clone +主分支 第二步:git fetch origin 分支名 第三步:git checkout -b 分支名 origin/分支名 第四步:git pull origin 分 ...
- HTTP-常用配置
前言 这篇主要介绍HTTP服务程序环境 可能有一些介绍不到,博主能力有限,欢迎大神来纠正改进 HTTP协议从http/0.9到如今的http/2.0中间发生了很大的改变,现在主流的事http/1.1 ...
- Hive中集合类型
Hive中集合类型 创建表,集合是以 - 分割的 数据文件 加载数据 查询数据 查询数组中第一个字段 再建一个表,使用map 查看数据文件 加载数据 查询数据 查询键值 创建表,struct类型 查看 ...
- oracle 控制文件的重建
目录 oracle 控制文件的重建 NORESETLOGS RESETLOGS oracle 控制文件的重建 不到最后时刻,如三个控制文件都已损坏,又没有控制文件的备份.还是不要重建控制文件,处理不好 ...
- 根据已经commit的数据,进行leader和peon之间的同步
Leader Election基本设计 按照rank表示优先级解决冲突问题,为每个monitor预先分配了一个rank 只会接受优先级(rank)比自己高.epoch比上次已接受的epoch大的选举请 ...