09 2021 档案

摘要:一、编译器产生未解决符号表、导出符号表、地址重定向表 ①未解决符号表:编译器在编译一个编译单元时,会将编译单元中只声明未定义的全局符号放入未解决符号表(声明为extern的全局对象或者是仅声明的全局函数,声明为extern作用于函数没有实际意义)。这些未解决符号的地址,在编译时地址会置为空即0x00 阅读全文
posted @ 2021-09-23 23:05 放不下的小女孩 阅读(1597) 评论(0) 推荐(0)
摘要:Union的大小等于它最大字段的大小,内存中union所有字段共用整个内存。 C风格的数值型强制转换是将一个类型的数值转化为符合另一个类型的数值,当两个类型的精度不同时,可能发生精度损失(近似值),并且位模式可能发生改变。 float d; unsigned long u=(unsigned lon 阅读全文
posted @ 2021-09-13 22:44 放不下的小女孩 阅读(352) 评论(0) 推荐(0)
摘要:记录一下有关编译的问题 1.条件转移和条件传送 编译器在编译条件控制的代码时,会采用两种策略进行编译。一个是条件转移(条件跳转),一个是条件传送。 条件转移:用条件跳转指令jmp等来完成编译。类似于goto,会跳过部分代码 movq $0,%rax jmp .L1 //条件跳转指令,跳转到.L1 m 阅读全文
posted @ 2021-09-11 21:51 放不下的小女孩 阅读(226) 评论(0) 推荐(0)
摘要:总结一下关于汇编的一些问题: 首先,汇编的最终目标是转换为机器码,所以其实所有操作都是对逻辑内存的操作。 1.寄存器寻址和间接寻址: 设寄存器rax,rdx。rdx中储存的地址为0x11,rax中储存的地址为0xaa,0xaa中储存的值为0xbb %rax //代表寄存器寻址,即返回寄存器rax的地 阅读全文
posted @ 2021-09-11 12:15 放不下的小女孩 阅读(602) 评论(0) 推荐(0)
摘要:此篇随笔总结一下各种情况下关于C语言的问题。 1.atoi函数只能处理C风格的字符串 atoi函数接收一个const char*的参数返回一个int。atoi函数只能处理结尾为/0的C风格字符串,如果输入为一个普通char的引用,会产生运行时错误,内存溢出,访问越界了。因此使用auto for遍历s 阅读全文
posted @ 2021-09-10 21:41 放不下的小女孩 阅读(253) 评论(0) 推荐(0)