zoukankan      html  css  js  c++  java
  • ucore学习笔记

    Lab0

    AT&T汇编

    常用寄存器

      %esp堆栈指针寄存器

      %ebp基址寄存器

      %eip指令寄存器

    基本语法

      源操作数在前,目的操作数在后:

      movl %eax,%ebx

    GCC内联汇编

    asm [volatile] ( Assembler Template

       : Output Operands

       [ : Input Operands

       [ : Clobbers ] ]

    )

    其中%0表示第一个输出变量,%n-1表示第一个输入变量

    Lab1

    bootloader做的事情

    1.使能保护模式&段机制

    (A20使能,加载段描述符表LGDT,设置GDTR,CR0置位)

    2.从硬盘上读取kernel in ELF格式的ucore kernel并放到内存中固定位置

    3.跳转到ucore OS的入口点处执行

    全局描述符表GDT

    GDT表的地址由GDTR指示

    跟踪函数调用栈

    c语言的栈从高地址向低地址增长

    栈区主要是局部变量

    堆区是动态分配空间,如malloc

    静态区是全局变量和静态变量

    其中函数栈结构大致如下:

     上一层的ebp由ebp指示,上一层的eip是[ebp+4]

    中断描述符表IDT(保护模式下的中断向量表)

    中断描述符表一个表项占8字节

    其中0~15位和48~63位分别为offset的低16位和高16位

    16~31位为段选择子

    通过段选择子在GDT中查找获得段基址,加上段内偏移量即可得到中断处理代码的入口

    IDTR指示IDT基址,由于IDT表项占8字节,所以IDT.base+trapno*8即为表项地址

  • 相关阅读:
    android 获取字体宽高
    android 渐变
    android 拖动按钮
    android 模拟器使用
    android 启动其它apk
    How to solve Error: This attribute must be localized. 两种方式
    Chirp用音频 传输文件
    android 打开指定网页
    防止apk被反编译
    iphone 滑块制作
  • 原文地址:https://www.cnblogs.com/obob/p/11679314.html
Copyright © 2011-2022 走看看