You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The size table at the end of the readme does not include the MASM32 Link size of TinyOriginal and shows that its size with crinkler is smaller than the shell code version.
I see some opportunity to improve still but it is easier to think about the pre-crinkler version and sizes.
Your observations about the size table are correct:
The latest version(s) of the TinyOriginal code fail to link with the MASM32 linker, which is why that combination is no longer included in the table. (This does indeed mean that "TinyOriginal" is no longer entirely "original", in the sense that it has been size-optimized itself.)
The Crinkled version of the TinyOriginal executable is indeed smaller than the shell code version; it's true that the video can be interpreted otherwise. We have a loose theory about the cause of this, which is that the shell code approach confuses Crinkler such that some of its optimizations don't work/apply.
If you want to think about pre-Crinkler versions from a code size perspective, then I think it is now best to look at obj file sizes, so after assembly but before linking. From the perspective of the challenge this repo is connected to, the goal is the smallest executable. That is clearly achieved with Crinkler being used with the (optimized) TinyOriginal code.
As your observations are correct but don't translate to an error in the readme (or code), I'm closing this issue. I will enable Discussions on this repo, so you can make this a topic there if you want.
Activity
rbergen commentedon Jan 26, 2023
Your observations about the size table are correct:
If you want to think about pre-Crinkler versions from a code size perspective, then I think it is now best to look at obj file sizes, so after assembly but before linking. From the perspective of the challenge this repo is connected to, the goal is the smallest executable. That is clearly achieved with Crinkler being used with the (optimized) TinyOriginal code.
As your observations are correct but don't translate to an error in the readme (or code), I'm closing this issue. I will enable Discussions on this repo, so you can make this a topic there if you want.