我继承了用8051汇编语言编写的10K行程序,需要进行一些更改.不幸的是,它是用最好的意大利面条代码传统写成的.程序 - 作为单个文件编写 - 是CALL和LJMP语句的迷宫(总共约1200个),子程序具有多个入口和/或出口点,如果它们可以被识别为子程序的话.所有变量都是全局的.有评论; 有些是正确的.没有现有的测试,也没有重构预算.
关于应用程序的一些背景知识:代码控制当前在国际上部署的自动售货应用程序中的通信中心.它同时处理两个串行流(在单独的通信处理器的帮助下),并且可以与最多四个不同的物理设备通信,每个物理设备来自不同的供应商.其中一个设备的制造商最近做了一个改变("是的,我们做了一个改变,但软件完全相同!")这导致一些系统配置不再起作用,并且不想改变它(无论它是什么他们没有改变).
该计划最初由另一家公司编写,转让给我的客户,然后由另一位顾问在九年前进行了修改.原始公司和顾问都不是资源.
基于对其中一条串行总线上的流量的分析,我想出了一个看似有效的黑客攻击,但它很难看并且没有解决根本原因.如果我对该计划有了更好的理解,我相信我可以解决实际问题.在代码被冻结之前,我还有大约一周的时间来支持月末发货日期.
原始问题:我需要很好地理解程序,以便在不破坏的情况下进行更改.有没有人开发过处理这种乱七八糟的技术?
我在这里看到一些很棒的建议,但受到时间的限制.但是,我将来可能有另一个机会去寻求一些更复杂的行动方案.
我想使用Doxygen来记录混合使用C和x86汇编语言的遗留代码.汇编语言不是内联的,而是在单独的仅汇编文件中.如何记录汇编语言部分?