草庐IT

c - GNU libc.so 如何既是共享对象又是独立可执行文件?

在Linux中,GNU标准C库的共享库(libc.so)不仅是一个共享库,还可以作为独立的可执行文件运行,打印出版本信息:[me@computer~]$/lib/libc.so.6GNUCLibrarystablereleaseversion2.12,byRolandMcGrathetal.Copyright(C)2010FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFOR

c - GNU libc.so 如何既是共享对象又是独立可执行文件?

在Linux中,GNU标准C库的共享库(libc.so)不仅是一个共享库,还可以作为独立的可执行文件运行,打印出版本信息:[me@computer~]$/lib/libc.so.6GNUCLibrarystablereleaseversion2.12,byRolandMcGrathetal.Copyright(C)2010FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourceforcopyingconditions.ThereisNOwarranty;notevenforMERCHANTABILITYorFITNESSFOR

linux - 自定义操作系统的引导加载程序无法跳转到内核时出现问题

我最近有了开始开发自己的操作系统的想法。在阅读了不同网站上的许多我认为可以帮助我完成这项任务的文章之后,我认为我现在可以开始了。(顺便说一句,我使用的是Ubuntu14.10x64)由于软盘是开发操作系统最简单的存储介质,所以我买了一个3.5英寸的软盘驱动器。我使用NASM作为汇编编译器,使用qemu作为模拟器。使用dd命令,我将现有的空(就文件而言)软盘克隆到名为floppy.img.bak的文件中。之后,我用x86汇编写了一个简单的bootloader:bootloader.asmorg7C00hjmp0x0000:start;gomsgdb'LoadingKernel...',0

linux - 自定义操作系统的引导加载程序无法跳转到内核时出现问题

我最近有了开始开发自己的操作系统的想法。在阅读了不同网站上的许多我认为可以帮助我完成这项任务的文章之后,我认为我现在可以开始了。(顺便说一句,我使用的是Ubuntu14.10x64)由于软盘是开发操作系统最简单的存储介质,所以我买了一个3.5英寸的软盘驱动器。我使用NASM作为汇编编译器,使用qemu作为模拟器。使用dd命令,我将现有的空(就文件而言)软盘克隆到名为floppy.img.bak的文件中。之后,我用x86汇编写了一个简单的bootloader:bootloader.asmorg7C00hjmp0x0000:start;gomsgdb'LoadingKernel...',0

linux - 从汇编文件中读取

我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar

linux - 从汇编文件中读取

我正在尝试学习汇编——Linux环境中的x86。我能找到的最有用的教程是WritingAUsefulProgramWithNASM.我给自己设定的任务很简单:读取文件并将其写入标准输出。这是我的:section.text;declaringour.textsegmentglobal_start;tellingwhereprogramexecutionshouldstart_start:;thisiswherecodestartsgettingexec'ed;getthefilenameinebxpopebx;argcpopebx;argv[0]popebx;thefirstrealar

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

我试图了解如何衡量性能并决定编写非常简单的程序:section.textglobal_start_start:movrax,60syscall然后我用perfstat./bin运行了程序。令我惊讶的是stalled-cycles-frontend太高了。0.038132task-clock(msec)#0.148CPUsutilized0context-switches#0.000K/sec0cpu-migrations#0.000K/sec2page-faults#0.052M/sec107,386cycles#2.816GHz81,229stalled-cycles-fronten

linux - Perf 启动开销 : Why does a simple static executable which performs MOV + SYS_exit have so many stalled cycles (and instructions)?

我试图了解如何衡量性能并决定编写非常简单的程序:section.textglobal_start_start:movrax,60syscall然后我用perfstat./bin运行了程序。令我惊讶的是stalled-cycles-frontend太高了。0.038132task-clock(msec)#0.148CPUsutilized0context-switches#0.000K/sec0cpu-migrations#0.000K/sec2page-faults#0.052M/sec107,386cycles#2.816GHz81,229stalled-cycles-fronten

linux - "mov rax, QWORD PTR fs:0x28"汇编指令有什么作用?

这个问题在这里已经有了答案:Whydoesthismemoryaddress%fs:0x28(fs[0x28])havearandomvalue?(3个答案)关闭4年前。紧接执行此指令之前,fs包含0x0。另外我想知道如何从GDB中的这个内存区域读取,该命令是什么?

linux - "mov rax, QWORD PTR fs:0x28"汇编指令有什么作用?

这个问题在这里已经有了答案:Whydoesthismemoryaddress%fs:0x28(fs[0x28])havearandomvalue?(3个答案)关闭4年前。紧接执行此指令之前,fs包含0x0。另外我想知道如何从GDB中的这个内存区域读取,该命令是什么?