一些试验demo
文章平均质量分 68
猪二哥
这个作者很懒,什么都没留下…
展开
-
C++实践1:RVO优化
问题1. 如下代码会输出什么?class String{public: explicit String(const char* p){ size_t size = std::strlen(p) + 1; data = new char[size]; std::memcpy(data,p,size); cout<<"1"<<endl; } ~String(){ delete[原创 2021-07-21 15:03:12 · 1079 阅读 · 1 评论 -
nm命令实战2: C++的static变量到底存储在哪里
上一篇先说结论已初始化存储在.data节,未初始化存储在.bss节,不管是否初始化,static关键字修饰的变量不允许外部引用。总结普通全局变量可被外部引用,static全局变量不可被外部引用局部变量不可被外部引用验证1. main.c如下static int global_var1 = 1;static int global_var2;int fun(){ static int inner_var1 = 3; int inner_var2 = 4; return 0原创 2021-07-16 15:18:19 · 509 阅读 · 0 评论 -
nm命令实战1: 分析ELF符号表&汇编输出
一.准备工作1. main.c代码如下extern int u_n1;extern void u_func1();long t_n3;long d_n4 = 3;int d_func2(){ u_func1(u_n1, t_n3, d_n4);}2. 生成ELF文件命令cc -o main.o -c main.c二. 理论知识1. nm命令的学习nm命令2. ELF的格式ELF文件就是我们使用上述命令生成的文件(main.o),它以.o结尾,就是我们常说的可重定位原创 2021-07-16 14:55:46 · 1122 阅读 · 0 评论 -
使用AT&T汇编格式 以循环方式计算阶乘 并打印输出到标准输出
首先是将数字转化为字符串思想做除法,从低位到高位,依次取出各位对每位,加上‘0’的ascii,此时其变为了字符放入一个栈中,从而反向输出从高位到低位代码#将数字转为字符串.bss .lcomm buff ,30 # 分配一个栈.data temp : .string "" # 保存最后结果.text.global _start_start: movq $1234, %rax # 被除数原创 2021-06-22 11:11:09 · 305 阅读 · 0 评论