![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机组成原理
文章平均质量分 80
jason_cuijiahui
这个作者很懒,什么都没留下…
展开
-
程序设计中的堆和栈
参考[函数调用的基本原理],就可以大概知道两者的不同,下面总结以下。栈(stack)是为执行线程留出的内存空间(每一个线程都有一个栈) 当线程创建的时候,操作系统(OS)为每一个系统级(system-level)的线程分配栈。栈附属于线程,因此当线程结束时栈被回收。当线程被创建的时候,设置栈的大小。特点: 1. 跟踪栈简单 2. 从栈中释放块(free block)只不过是指针的偏移而已 3原创 2017-09-30 18:32:04 · 990 阅读 · 0 评论 -
函数调用的基本原理
转自 程序从main函数开始顺序执行,函数调用可以看做是一个无条件跳转,跳转到对应函数的指令处开始执行,碰到return语句或者函数结尾的时候,再执行一次无条件跳转,跳转会调用方,执行调用函数后的下一条指令。存在问题:参数如何传递?函数如何知道返回到什么地方?在if/else, for中,跳转的地址都是确定的,但函数自己并不知道会被谁调用,而且可能会被很多地方调用,它并不能提前知道执行结束后返原创 2017-09-30 17:37:27 · 2580 阅读 · 0 评论 -
计算机程序的思维逻辑(挺好的文章列表)
http://www.cnblogs.com/swiftma/p/5631311.html转载 2017-10-01 16:13:30 · 410 阅读 · 0 评论 -
有符号整型加法与乘法
补码的加法和减法运算补码加减法运算的基本公式补码表示的两个数在进行加法运算时,可以把符号位与数位同等处理,只要结果不超过机器能表示的数值范围(整数:运算后的结果按2n−12^{n-1}取模;小数:运算后的结果按2取模)整数 [A]补+[B]补=[A+B]补(mod2n+1)[A]_补+[B]_补 = [A+B]_补 (mod 2^{n+1})小数 [A]补+[B]补=[A+B]补(mod2)原创 2017-09-27 18:23:55 · 2321 阅读 · 0 评论 -
大端模式(big-endian)与小端模式(little-endian)
参考自大端模式与小端模式大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中.小端模式是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。大小端模式的由来在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器原创 2018-01-09 10:46:07 · 25195 阅读 · 1 评论 -
多线程程序在单核cpu与多核cpu上是怎么工作的?
转自1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢) 多个cpu的话就可以在两个cpu中同时执行了…………..a2: 单核CPU上运行的多线程程序, 同一时间只能一个线程在跑, 系统帮你切换线程而已, 系统给每个线程分配时间片来执行, 每个时间片大概10ms左右, 看起来像是同时跑, 但实际原创 2018-01-30 10:02:30 · 9827 阅读 · 0 评论 -
进程在内存中的结构
简介首先要来理解一下可执行文件加载进内存后形成的进程在内存中的结构,如下图: 代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。数据区:存放已初始化的全局变量、静态变量(全局和局部)、常量数据。BBS区:存放的是未初始化的全局变量和静态变量。栈区:由编译器自动分配释放,存放函数的参数值、返回值和局部变量,在程序运行过程中实时分配和释放,栈区由操作系统自动管理,无须程...原创 2018-09-11 20:38:38 · 8641 阅读 · 0 评论