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。

  • 相关阅读:
    Let the Balloon Rise
    Andy's First Dictionary
    myschool 1204
    vector容器
    766A Mahmoud and Longest Uncommon Subsequence
    python全栈开发-logging模块(日记专用)
    python全栈开发- day14列表推导式、生成器表达式、模块基础
    python全栈开发-Day13 内置函数
    python全栈开发-Day12 三元表达式、函数递归、匿名函数
    python全栈开发-Day11 迭代器、生成器、面向过程编程
  • 原文地址:https://www.cnblogs.com/ph829/p/4322852.html
Copyright © 2011-2022 走看看