设想中的计算机语言:可执行对象的构造函数和析构函数
经典
C语言的内存管理,是一块一块的,用malloc分配内存,用free释放内存。
C++有对象,一个对象是好几片内存,用指针连接起来,用构造函数和析构函数管理对象。
创意
如图,是一个“可执行对象”,它由多块内存,用call, jmp等指令连接起来。
它需要构造函数和析构函数来管理。
构造函数需要分配内存块,装载可执行代码,最关键的是“代码重定向”,即,将代码中的需要修改的地址修改成正确的样子。
析构函数释放内存。
总结
“可执行对象”是一个创意。现有的OOP,对象里储存的全是数据,代码集中管理。而可执行对象中储存的是代码。
构造函数通过修改对象内的地址,完成重定向,而不是每调用一次函数都要查表找地址。也就是说,直接修改call, jmp指令后边的地址立即数。