操作系统相关的记录
梦悦foundation
程序员,之前在字节跳动做嵌入式,主要是在linux上用c语言开发,主营业务还是写代码,但是个人的兴趣爱好相当广泛,法律允许范围内几乎所有的领域都感兴趣,由于个人时间和精力有限,其实主要是经济实力受限,只能在经济能力范围内浅尝辄止,画重点,“浅尝辄止”!
目前涉猎的领域:IT(吃饭的家伙不能丢),CG影视后期(PS,Pr,AE,C4D),哲学,心理学!
slogan:分享和记录改变世界的每一步
展开
-
c语言函数调用与ebp,esp的关系
简单的介绍一下intel汇编指令集和gnu 汇编指令有什么差别下面的介绍很多引用来自于这一篇文档AT&T 汇编语言与 GCC 内嵌汇编简介在 INTEL 语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。AT&T 语法第一个为源操作数,第二个为目的操作数,方向从左到右,合乎自然。例INTEL AT&TMOV EAX,EBX ...原创 2019-04-12 08:35:51 · 828 阅读 · 0 评论 -
gnu嵌入汇编,内嵌汇编详细的介绍
GCC 提供了内嵌汇编的功能,可以在 C 代码中直接内嵌汇编语言语句,大大方便了程序设计。简单的内嵌汇编很容易理解,例:__asm__ __volatile__("hlt");"__asm__" 表示后面的代码为内嵌汇编,“asm”是“__asm__”的别名。“__volatile__” 表示编译器不要优化代码,后面的指令保留原样,“volatile”是它的别名。 括号里面是汇编指令。...原创 2019-04-13 08:11:53 · 8750 阅读 · 4 评论 -
ucore--可读ELF格式文件的baby bootloader--proj2-第一部分
项目的源码https://github.com/sgy1993/ucore_step_by_myself相比较于 显示字符的toy bootloader 这个的修改, proj2的基础上的主要修改如下。λ git statusOn branch masterYour branch is up to date with 'origin/master'.Changes not sta...原创 2019-04-13 10:28:52 · 212 阅读 · 0 评论 -
关于链接地址和加载地址的介绍
链接地址( Link address)Link Address是指编译器指定代码和数据所需要放置的内存地址, 由链接器配置加载地址Load Address是指程序被实际加载到内存的位置一般由可执行文件结构信息和加载器可保证这两个地址相同。 Link Addr和LoadAddr不同会导致直接跳转位置错误直接内存访问(只读数据区或bss等直接地址访问)错误堆和栈等的使用不受影响,...原创 2019-04-13 14:23:21 · 2918 阅读 · 0 评论 -
ucore--可读ELF格式文件的baby bootloader--proj2-第二部分
github项目的地址https://github.com/sgy1993/ucore_step_by_myself参考前面一部分ucore–可读ELF格式文件的baby bootloader–proj2-第一部分https://blog.csdn.net/sgy1993/article/details/89277000之前实现的功能只能读取到内存里面,但是因为没有相应的镜像,也...原创 2019-04-13 15:20:58 · 170 阅读 · 0 评论 -
c语言关于可变参数编程的介绍
下面关于可变参数的内容主要参考这几篇文章va_start和va_end使用详解http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html深入C语言可变参数(va_arg,va_list,va_start,va_end,_INTSIZEOF)https://www.cnblogs.com/haoyuanyuan/p/32...原创 2019-04-13 17:20:53 · 102 阅读 · 0 评论 -
ucore--可读ELF格式文件的baby bootloader--proj2-第三部分
// read the 1st page off disk,读取内核elf文件的头部出来,这个地方只是读取了4KB readseg((uintptr_t)ELFHDR, SECTSIZE * 8, 0);我们查看一下制作内核的时候的文件是多大dd if=bin/kernel of=bin/ucore.img seek=1 conv=notrunc真实的文件大小差不多在29...原创 2019-04-18 16:06:50 · 213 阅读 · 0 评论 -
ucore程序怎么能够打印堆栈
这个是一个能够读取标准输入的程序char *readline(const char *prompt) { if (prompt != NULL) { cprintf("%s", prompt); } int i = 0, c; while (1) { c = getchar(); if (c < 0) { ...原创 2019-05-29 17:30:01 · 146 阅读 · 0 评论