Skip to content

Confusion from the readme #20

Closed
Closed

Description

@chazste

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.

Thanks!

Activity

  1. rbergen commented on Jan 26, 2023

    @rbergen
    Collaborator

    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.

  2. locked and limited conversation to collaborators on Jan 26, 2023
  3. converted this issue into a discussion #21 on Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions