导航:首页 > 源码编译 > 编译出来的代码大于存储空间

编译出来的代码大于存储空间

发布时间:2022-11-03 05:40:51

⑴ 我用VHDL编写1000行代码,大概要占多大的存储空间,用fpga内部flash,只有1k,1k大概能写几千行代码

这个与你代码长度基本无关,综合编译工具会将代码映射为硬件链接,而不是像单片机那样的需要单条指令取指执行,在fpga内部是没有代码量这一说法的,存储空间取决于你所写的代码所用到的资源情况,一般编译工具会给出你的资源使用情况。

补充:如果是使用fpga搭建nios嵌入式系统的话,软核部分的代码量就需要你自己优化了,网上有些代码量优化的方法,你可以看看。我看你的问题描述为 “使用vhdl编写” ,那应该不会是软核程序了。

⑵ 用机器语言编写程序和高级语言编写的程序哪个存储空间小,哪个更容易

计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。目前通用的编程语言有两种形式汇编语言和高级语言。汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言是目前绝大多数编程者的选择⊥汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的vb、vc、foxpro、delphi等,这些语言的语法、命令格式都各不相同。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类解释类执行方式类似于我们日常生活中的同声翻译”,应用程序源代码一边由相应语言的解释器翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。编译类编译是指在应用源程序执行之前,就将程序源代码翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.obj)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如visualc++、visualfoxpro、delphi等。

⑶ 51程序,编译不过去

变量精简一下,不要都用全局变量,能用局部的就定义成局部,并且尽量定义成idata。有些布尔量定义的使用不要用字节,要定义到BIT区,还有函数嵌套不要太多层。实在不行,你把程序发出来,大家看看。

⑷ C++ 编译程序内存过大

调用函数时,尽量用“引用传递”作为参数, 而不是直接把矩阵本身作为参数传进去,这样在内存中只有一个 P 和 Q的拷贝。
另外,看得出,这两个矩阵光存一份就已经很大了。如果连把它们读入到内存里都没办法的话,就最好考虑给自己的机器加内存条了。
不增加内存,那么降低存储空间的需求,就得增加时间复杂度。你可以把矩阵存储在多个硬盘文件里,这样每次读一部分到内存然后处理一些,存回去。最后再一点点拼出来最后结果。

⑸ 编译时分配内存和运行时分配内存

编译其实只是一个扫描过程,进行词法语法检查,代码优化而已,编译程序越好,程序运行的时候越高效。
我想你说的“编译时分配内存”是指“编译时赋初值”,它只是形成一个文本,检查无错误,并没有分配内存空间。

当你运行时,系统才把程序导入内存。一个进程(即运行中的程序)在主要包括以下五个分区:
栈、堆、bss、data、code

代码(编译后的二进制代码)放在code区,代码中生成的各种变量、常量按不同类型分别存放在其它四个区。系统依照代码顺序执行,然后依照代码方案改变或调用数据,这就是一个程序的运行过程。

⑹ 大家帮忙看看,这是在编译msp430时出的错误,但是程序没有超内存

你好,请打开msp430芯片对应的xcl文件,iar下面的。

请先搞清楚这个文件里面的,每一个参数的含义,然后就明白了,430的这些内存映射都在这个文件中。

比如"-Z(CODE)就是表面,代码的存储空间。INTVEC就是表面中断向量。

⑺ 请各位大大们帮帮忙,万分感激,如果顺利解决,我还可以加分

首先,在语言习惯上我建议你这样写:
ORG 0000H
LJMP START
START:
MOV 30H,#0A3H
MOV A,30H
ANL A,#0F0H
MOV 31H,A
MOV A,30H
ANL A,#0FH
MOV 32H,A
END
其次,这断程序是没有绝对性错误的,楼上所回答的有错误,ORG所指明的是程序存放的地址,它属于ROM。而寄存器属于RAM。它们是不同的存储器。不会有所冲突。这也是51单片机的特性。RAM中的20H以前的都是寄存器。20H到30H之间的是位寻址单位。30H以后是自由堆栈空间。一般都要将SP指名30H以后。才不会出现不必要的错误。楼主这断程序用来学习调试是可以的。但你所提的问题,其实不是问题。下面我给你讲解一下:
51单片机工作时是一直处于运行状态的。就算你的程序运行结束它也还是要继续运行一些“空闲指令”,这也就是为什么每个Keil工程中都会添加一个“STARTUP.A51”文件的原因。
STARTUP.A51中就有这种让单片机一直运行的语句:
IDATALOOP:
MOV @R0,A
DJNZ R0,IDATALOOP。
所以你在学习单片机的时候,不能把WINDOWS里面调试程序的一些理解带过来。
到些问题答毕。
如果还有什么问题,可以与我交流一下。
还有就是,记得给分。

⑻ 单片机中类型为什么会影响代码空间(CODE MEMORY)(50分送上)

在C语言定义的变量,如int、char等等,定义时看似简单,事实上编译器要花费很大的代码为它们分配存储空间,它们是在R0-R7里按指定的格式分配的。要实现这些分配,就要在C语言编译成汇编语言时转换出许多程序代码。因为在汇编语言里可没有整型、实型、字符型的区别,都是8位的字节形式。C语言转换成汇编时,要为不同的数据类型分配存储空间,还是用程序代码完成的。所以有经验的程序员是尽量避免占据空间大的数据格式。 举例:usinged char型 变量占的空间1字节,但代码的长度为16字节; char型 变量占的空间1字节,但代码的长度为54字节; usinged int 型 变量占的空间1字节,但代码的长度为147字节; long型 变量占的空间1字节,但代码的长度为425字节; 等等。也就是说非得这么多的程序代码,单片机才能把它识别成这种类型的数据。 楼主所说的数据空间的大小是何意? 每种变量占据的数据空间是固定的呀? 程序编译后的数据空间? 这句话不通。数据空间存放的是程序运行中不断变化的数,存放的数据量是由程序的运行状态决定的。楼主的意思是按不同的方式定义的数据,程序一开始运行时数据空间放了多少数据吗?数据存储器里的数一般是初始化数组、定义全局变量的初值这一类数,由定义时的前缀决定是否放数据寄存器。如果定义了data 或Xdata等,就把它放在数据空间。定义了code就放在程序空间。

⑼ 单片机中类型为什么会影响代码空间(CODE MEMORY)(50分送上)

在C语言定义的变量,如int、char等等,定义时看似简单,事实上编译器要花费很大的代码为它们分配存储空间,它们是在R0-R7里按指定的格式分配的。要实现这些分配,就要在C语言编译成汇编语言时转换出许多程序代码。因为在汇编语言里可没有整型、实型、字符型的区别,都是8位的字节形式。C语言转换成汇编时,要为不同的数据类型分配存储空间,还是用程序代码完成的。所以有经验的程序员是尽量避免占据空间大的数据格式。
举例:usinged char型 变量占的空间1字节,但代码的长度为16字节;
char型 变量占的空间1字节,但代码的长度为54字节;
usinged int 型 变量占的空间1字节,但代码的长度为147字节;
long型 变量占的空间1字节,但代码的长度为425字节;
等等。也就是说非得这么多的程序代码,单片机才能把它识别成这种类型的数据。
楼主所说的数据空间的大小是何意?
每种变量占据的数据空间是固定的呀?

程序编译后的数据空间?
这句话不通。数据空间存放的是程序运行中不断变化的数,存放的数据量是由程序的运行状态决定的。楼主的意思是按不同的方式定义的数据,程序一开始运行时数据空间放了多少数据吗?数据存储器里的数一般是初始化数组、定义全局变量的初值这一类数,由定义时的前缀决定是否放数据寄存器。如果定义了data 或Xdata等,就把它放在数据空间。定义了code就放在程序空间。

⑽ c语言哪些占程序空间哪些占内存空间

一个由C/C++编译的程序占用的内存分别为以下四个部分:

  1. 程序代码区:存放程序的二进制代码。

  2. 静态数据区:存放程序运行期间用到的数据。其存储空间是在编译时分配的,在整个程序执行期间静态数据区中的数据一直存在,程序结束后由系统释放。

  3. 动态内存区(也称栈):也存放程序运行期间用到的数据,其存储空间在程序运行期间由编译器自动分配释放,其生命周期短于程序的运行期。

  4. 堆区:由程序员分配释放,若程序员不释放,程序结束时可能由系统回收。

以上内容抄自课本《C语言与程序设计》(电子工业出版社)

阅读全文

与编译出来的代码大于存储空间相关的资料

热点内容
拆解汽车解压视频 浏览:593
新版百度云解压缩 浏览:588
android上下拉刷新 浏览:876
centos可执行文件反编译 浏览:836
林清玄pdf 浏览:270
黑马程序员java基础 浏览:283
awss3命令 浏览:358
百度店铺客户订单手机加密 浏览:500
钉钉班群文件夹怎么上传文件 浏览:749
人社app怎么解绑手机 浏览:101
caj文件夹打不开 浏览:475
什么app可以将电量变色 浏览:692
解放出你的解压抖音小游戏 浏览:346
什么方式解压比较好 浏览:267
erp是什么服务器 浏览:186
python中tmp 浏览:25
说明wpf加密过程 浏览:146
java读取list 浏览:704
iis7gzip压缩 浏览:41
有什么安卓机打吃鸡好 浏览:599