2013年8月1日

csapp遗留

摘要: 再次拜读csapp_2ed,仍然存在大量不足,部分习题尝试做了解答,还是有些不会,一些临碎的记录如下:p_159: sizeof运算符的返回值为size_t,无符号整型; 2.75ANSI C明确规定不允许编译器改变结构体成员对象的次序;如果让编译器随心所欲地改变结构体中各个对象的位置的话,显存的程序大部分都会崩溃。在C语言中,函数往往通过在结构体地址上加上偏移量来计算变量的位置。p_466: ARM中PC为当前指令地址+8通过典型的5级流水显然很容易理解,问题在于mips体系中分支延迟槽的实现问题又一次困扰住自己了(原来看了《计算机组成与设计》,上面讲了,没有留下笔记,有时间还得再看下)p_ 阅读全文

posted @ 2013-08-01 12:19 阿加 阅读(271) 评论(0) 推荐(0) 编辑

关于非本地跳转

摘要: csapp p_795如下所述的问题经过讨论并未被解决……以下示例中未以ARM为例,因为我查到的ARM的ABI规范中,寄存器均由callee保存,或者callee与caller均不保存,因此很容易可以解决下列问题。以下以i386为例.关于非本地跳转存在的疑问(以setjmp、longjmp为例)函数调用之间需遵循ABI规范 有些寄存器是由caller保存(以备被callee使用而修改原来的值),当从callee返回后恢复这些寄存器; 有些寄存器是由callee保存(以备被callee使用而修改原来的值),当即将从callee返回时恢复这些寄存器; 某些寄存器可以随便使用,即不需要caller保 阅读全文

posted @ 2013-08-01 12:16 阿加 阅读(451) 评论(0) 推荐(0) 编辑

全局变量的多重定义

摘要: 此处请参考下:http://coolshell.cn/articles/10115.html C语言全局变量那些事儿csapp :p_700以上记录的解决方法有个缺点,当我们分别编译而后再链接时,只会报warning,因此当我们定义全局变量时尽量使其成为强符号,例如对于上例:double x = 0; 阅读全文

posted @ 2013-08-01 12:13 阿加 阅读(720) 评论(0) 推荐(0) 编辑

导航