zoukankan      html  css  js  c++  java
  • 《程序员的自我修养》阅读笔记(三):

    第4部分 库与运行库

     第10章 内存

    函数调用惯例。函数返回值通常保存在寄存器eax,然后由调用者读取,对5-8字节返回值,通常由eax保存低4位,edx保存高4位。而返回值大于8字节时,调用过程大致如下:

    声名狼藉的C++返回对象。为此,C++提出了返回值优化(Return Value Optimization,RVO)这样的技术。

    Linux下两种堆空间分配方式,即两个系统调用:brk()系统调用和mmap()。

    第12章 系统调用与API

    中断。中断号对应中断处理程序(Interrupt Service Routine,ISR),这种对应通过中断向量表。

    中断号有限,不一一对应。用户将系统调用号放入eax,然后使用int 0x80调用中断,中断服务程序就可以从eax里取得系统调用号,进而调用对应的函数。

    插入: SS, SP, BP 三个寄存器

    SS:存放栈的段地址;
    SP:堆栈寄存器SP(stack pointer)存放栈的偏移地址;

    BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到。比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.

    用户态到内核态的切换:

    软件开发工具包(外语首字母缩写:SDK、外语全称:Software Development Kit)。

    第13章  运行库实现

    操作符函数。new、delete、+、-、*等都有对应操作符函数。

    全局操作符重载;也可以重载某个类的new、delete。

  • 相关阅读:
    固定表头的table
    Object.assign()方法
    一个命令解决linux重启nginx就丢失pid文件问题
    js-xlsx 一个实用的js 导出列表插件
    SparkSQL执行时参数优化
    HSQL转化为MR过程
    简单写下提交sql-map-shuffle-reduce的过程
    order by/sort by/distribute by /cluster by 的区分
    hive中如何控制mapper的数量
    hive 窗口和分析函数功能
  • 原文地址:https://www.cnblogs.com/ph829/p/4322852.html
Copyright © 2011-2022 走看看