- 博客(18)
- 收藏
- 关注
原创 LINUX 动态库和静态库大小的试验
2 生成动态库时,如果 gcc -shared -o lib.so -la -lb 会把静态库liba.a libb.a的函数都放入动态库里面,导致动态库的大小增加。静态库生成时用ar命令不允许用-l选项连接其他的库文件。昨天,项目里面发现动态库的大小有几百K,后来发现时因为生成动态库时用-l链接了很多静态库进来导致的。为了深入理解这个问题,就自己做了几个实验,先上结论。3 无论时静态库还是动态库,都不会报找不到未定义函数的错误。所以完全不用加-l选项。1 单独看大小,静态库远小于动态库。
2023-05-18 08:48:43
330
原创 X86 保护模式下的段界限的计算
这几天一直在学习<<X86汇编语言从实模式到保护模式>>中关于如何计算保护模式下的段界限的内容.个人感觉这本书大部分内容都写的清楚明白,但这部分知识点讲的有点乱,虽然讲的很多,但我感觉始终没有讲到点子上,所以我费了好大劲才算看明白了.下面我把我的理解尽量简单的描述一下,希望能帮助大家加深理解. 对于普通段而言,由于段是向上生长的,所以段界限L定义的是段向...
2019-11-02 23:31:52
1135
1
原创 王爽汇编实验14解答
这道题本来不难,但是emu8086并不能正确的显示时间,也不能正确的运行键盘中断,我分析是因为emu8086并没有仿真实模式下的DOS的缘故。所以去网上下载了DOSBOX解决了这个问题。DOSBOX可以很好的运行以上的两个程序。而且速度也快了很多。这道题我写了一个CMOS_READ函数来读取CMOS的一个字节,打印函数就用课程设计1用过的show_str 搞定。代码如下:assum...
2019-09-22 11:16:53
375
原创 王爽汇编实验11解答
这道题比较简单,直接上代码吧。data segment db "Beginner's All-purpose Symbolic Instruction Code.",0endsstack segment dw 128 dup(0)endscode segmentstart:; set segment registers: mov ax, data...
2019-09-15 17:08:05
287
原创 王爽课程设计1解答
这道题其实就是把前面的几次练习串在一起就可以。难点在于第二列,要先实现32位除以16位的divdw子程序。不失一般性,这里还是实现了最后3年的结果。; analysis for 3 years for efficiency and it is easy to extend to 21 years.assume cs:codesg stack segment db 32 dup (...
2019-09-15 16:10:28
279
原创 王爽汇编实验10解答
10.1 显示字符串; multi-segment executable file template.data segment ; add your data here! db 'Welcome to masm!',0endsstack segment dw 128 dup(0)endscode segmentstart:; set segm...
2019-09-14 20:18:29
342
原创 王爽汇编语言实验9解答
实验9自己做下来感觉代码不难写,但是寄存器的分配很关键,要省着点用,另外用DEBUG调试非常费力,后来用了emu8086调试方便多了,可以单步调试成功就只是时间问题了。assume cs:codesg ;ds = char_array;L[si] outsite loop;l[di] insite loop;es:bx write memorystack segment d...
2019-09-13 20:10:03
626
原创 王爽的汇编语言实验7解答
这道题主要考察了汇编语言寻址方式和数据的存取规则是否熟练,调试过程还是颇费了些周折。好歹还是坚持把代码调试通过了。这里把代码贴出来和感兴趣的朋友分享一下。下面的代码在MASM5下调试通过。(不失一般性,选取了后面的3年数据); analysis for 3 years for efficiency and it is easy to extend to 21 years.assume ...
2019-09-10 21:58:11
1311
原创 在ARM335X的环境下实现NFS加载根文件系统
一直在用ARM335X开发板做项目,用的都是FLASH加载根文件系统的方式。这两天在看TI的SDK升级方面的有关文章都推荐采用NFS加载根文件系统的方式来进行开发,所以决定在原来的系统上尝试一下。 1. UBUNTU 18.04 虚拟机NFS 服务器端的设置 1)修改/etc/exports文件如下:# /etc/exports: the access co...
2019-08-14 14:18:10
953
原创 C程序堆栈的结构的初探
对C的函数堆栈的内容一直只有个模糊的印象。今天写了个小程序以加深自己对函数堆栈的理解。经过打印输出,发现调用函数时,系统会依次往堆栈中压入如下数据:从右到左依次压入实参 函数的返回地址 调用函数的栈基址EBP 3个寄存器的值 局部变量测试代码如下:/* This file research C stack */#include <stdio.h>unsi...
2019-05-02 18:09:30
198
原创 霍夫曼压缩和解压缩C语言实现
最近一段时间抽空看了霍夫曼压缩和解压缩的算法,觉得挺巧妙的,就决心自己动手用C实现,没想到算法看看挺简单的,实际都是做起来处处都需要仔细考虑才行,折腾了一周左右终于调试通过了,收获挺大的,付出总是有回报的! 闲话少说,下面就贴上我的实现代码。霍夫曼压缩解压缩算法需要用到位操作和堆的相关函数。堆的实现在我前面的博客里已经给出实现代码了,这里就不重复贴了。 1.位实现代码(转载的,感谢...
2019-04-29 22:59:52
894
原创 堆的C语言实现
这几天学习了堆,优先级队列和霍夫曼压缩算法,准备自己动手实现一下。今天先实现了堆,以备后用的同时也加深了对堆的理解。代码全部在CodeBlocks下测试通过。 头文件:#ifndef _DATA_STRUCT_H#define _DATA_STRUCT_H#define ARRAY_OFFSET(a,size,offset) ((a) + (size)*(offset))...
2019-04-20 22:09:30
136
原创 用操作符堆栈和操作数堆栈实现四则运算表达式
学习了用用操作符堆栈和操作数堆栈实现四则运算表达式的基本思想和实现后,在https://blog.youkuaiyun.com/cyq0318/article/details/78633752/的基础上自己动手实现了一下,代码全部在CodeBlocks 下测试通过。堆栈实现代码如下:#ifndef _DATA_STRUCT_H#define _DATA_STRUCT_Htypedef stru...
2019-04-14 21:15:07
1875
原创 算法:求给定一组整数的一个子串,这个子串的和是所有子串中最大的
这个算法编程珠玑中给出了详细的描述,但书中的代码比较简单,其中并没有给出如何获取子串的起始位置的计算。这里给出完整的C语言实现,代码全部在CodeBlocks下测试通过。1.平方和算法/* 求连续的一串数中具有最大和的子串,O(n*n)*/int array_max_subarray_calc(int *array,int num,int *from,int *to){ int...
2019-04-06 15:04:01
413
原创 图的Dijkstra算法的C语言实现
在图的遍历算法的基础上我们可以来实现Dijkstra算法了。Dijkstra算法的基本思想就是计算出图中从起点到所有节点的最短路径。每个节点只需要记住从起点到自己的最短路径和最短路径对应的父节点信息就可以了。算法的具体情况我这里就不赘述了,大家感兴趣的话可以百度一下。代码在CodeBlocks下测试通过。graph.h代码:#ifndef _GRAPH_H#define _GRAPH...
2019-04-05 17:21:29
1167
原创 图的最短路径问题的C语言实现
最近学习了图的广度优先搜索的介绍,为了加深理解就自己动手用C语言实现了下面这个路径问题,代码全部在codeblocks下测试通过。 给定起点和终点和中间所有路径的时间,求 1)所有从起点出发到达终点的所有路径 2)从起点到终点的最短路径 设计思路: 1)用节点来表示各个站点 2)用连接两个相邻节点的连接来表示他们之间的路径 3)从起点到终点遍历一遍用递归的...
2019-04-02 21:30:26
3367
原创 希尔排序算法的C语言实现
希尔排序的介绍这里就不赘述了,网上有很多。直接上代码,代码在CODEBLOCKS测试通过。void array_print(int *array,int num){ int i; for(i = 0;i < num; i++) printf("%d\t",array[i]); printf("\n"); return;}...
2019-03-29 21:54:13
284
原创 UBUNTU 1.6 下 安装 freeswitch 1.6
1. git clone -b 1.6 https://stash.freeswitch.org/scm/fs/freeswitch.git2. 运行 ./bootstrap 报错: bootstrap: libtool not found. You need libtool version 1.5.14 or newer to build FreeSWITCH fro...
2018-07-06 16:30:34
589
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人