This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

2k limitation code

Hi guys,

I am currently using the evaluation software C51 tool kit to compile my c code into machine code. Apparently, this version of software has a limitation of 2k of object code. At first I thought that will be a .hex file, but then after I manage to squeeze my code size to a size that the version is able to compile (before that it always comes out with a message saying I exceed the 2k limit), I realise that my .hex file is around 8kB, so it is clear that that is not the one. I would like to ask what does it mean by object code? Which will be the file that cannot exceed 2k of size? Shouldn't be the one with .obj as well I think, as those exceed 2k as well.

Thanks guys.

Regards,
Siang

Parents
  • There are no easy rule to deduce code size from a hex file. It is less than half the hex-file size. Probably about 40%.

    But when thinking about limited compilers: Some compilers just count amount of code space. Some includes amount variable space used too, when figuring the limit for the evaluation version.

    That is why it isn't good to look at the download files. The documentation for the compiler should say what blocks that are included, and then you normally look at the map file or explicit size information being emitted in the build log.

Reply
  • There are no easy rule to deduce code size from a hex file. It is less than half the hex-file size. Probably about 40%.

    But when thinking about limited compilers: Some compilers just count amount of code space. Some includes amount variable space used too, when figuring the limit for the evaluation version.

    That is why it isn't good to look at the download files. The documentation for the compiler should say what blocks that are included, and then you normally look at the map file or explicit size information being emitted in the build log.

Children
  • As Per pointed out, the hex file size does not directly reflect the code/data size of your program.
    With the evaluation tools, you can compile code that exceeds the 2K limit but the linker restricts object code to the 2K limit. The Keil object file is found in your project files with the same name as your project but with NO file extension. Object files can contain symbol linkage for source level debugging but the object to hex converter will strip these symbol links.
    I agree with Per that a fair rule of thumb is the actual binary code size will be about 40% of the hex file size.
    Bradford