《汇编语言(第三版》王爽著笔记

学习笔记

第一章 基础知识

1.1 机器语言

01表示,简单程序就已经晦涩难懂以及难以排查错误

1.2 汇编语言的产生

机器语言的缺点,所以产生了汇编语言
mov ax,bx 将寄存器bx内容送到ax中

1.3 汇编语言组成

三类指令组成:汇编指令,伪指令,其他符号 , 核心:汇编指令

1.4 寄存器

内存,用于存放指令和数据

1.5 指令和数据

内存和磁盘中指令和数据都是二进制数据,cpu在工作用会将某些数据看做指令,某些看成数据;

1.6 存储单元

存储器会被分成若干存储单元,从0开始顺序编号
8bit(位) = 1Byte(字节)

1.7 cpu对存储器的读写

cpu从内存中读取数据,需要知道数据的地址
cpu要对数据进行读写,需要进行三类信息交互:地址信息,控制信息,数据信息
电子计算机通过导线传输电信号,总线负责在计算机中链接cpu和芯片,总线分三类:地址总线,控制总线,数据总线
MOV AX,[3] 3号地址的数据传入AX寄存器中

1.8 地址总线

一根线高电平低电平表示01,几根线表示几位二进制
几根线表示几位的寻址能力

  1. 设置: objc_setAssociatedObject(self, @”name”,name, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 获取: objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy); 移除: objc_removeAssociatedObjects(self);
  2. 关联对象并不是存储在被关联对象本身内存中
  3. 关联对象存储在全局的统一的一个AssociationsManager中
  4. 策略:
1
2
3
4
5
6
7
typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) {
OBJC_ASSOCIATION_ASSIGN = 0, // 指定一个弱引用相关联的对象
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, // 指定相关对象的强引用,非原子性
OBJC_ASSOCIATION_COPY_NONATOMIC = 3, // 指定相关的对象被复制,非原子性
OBJC_ASSOCIATION_RETAIN = 01401, // 指定相关对象的强引用,原子性
OBJC_ASSOCIATION_COPY = 01403 // 指定相关的对象被复制,原子性
};
  1. 如果设置关联对象为nil,就相当于是移除关联对象
  2. weak修饰的属性,在对象销毁时候指针就置空了,但是哈希表内对应的值还在,当我们使用这个指针去释放的时候,这个指针地址已经为空了

关联对象原理