compiler-explorer VS movfuscator

Compare compiler-explorer vs movfuscator and see what are their differences.

compiler-explorer

Run compilers interactively from your web browser and interact with the assembly (by compiler-explorer)

movfuscator

The single instruction C compiler (by xoreaxeaxeax)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
compiler-explorer movfuscator
198 82
15,483 9,244
1.8% -
9.9 0.0
4 days ago 18 days ago
TypeScript C
BSD 2-clause "Simplified" License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

compiler-explorer

Posts with mentions or reviews of compiler-explorer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-06-04.
  • Ask HN: Whats State of the art for Code Sandboxing? (2024)
    1 project | news.ycombinator.com | 6 Jun 2024
    This is probably not helpful, but, can you figure out the infra of https://godbolt.org/ and follow what they have done?
  • New telescope images of Jupiter's moon Io rival those from spacecraft
    1 project | news.ycombinator.com | 4 Jun 2024
    https://godbolt.org/

    Not only will it show you how C/C++/Rust, etc... language statements map to CPU instructions, but it can also show you how CPUs execute those instructions! There are advanced views that show the various pipeline stages, execution ports, etc...

    E.g.: https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...

    The right-most tab should show you the CPU execution pipeline

  • Ask HN: Going low-level – what to learn next?
    5 projects | news.ycombinator.com | 4 Jun 2024
    What you're basically after is some "Tooling and Methodology" studies for embedded. You've got the basics, but now you need to learn some more tools and the methods that make those tools really useful to the embedded/low-level context.

    Some simple things you can do:

    * Get yourself a suitable embedded development system - I would recommend anything ESP32'ish that suits your fancy such as a Liligo or Watchy ESP32-based watch, or PineTime if thats more up your alley - and then write some little apps for it.

    * Get to know Godbolt with a great deal of intimacy, just as a general approach to understanding what is going on:

    https://godbolt.org/

    * Invest a little workbench time in some of the various embedded frameworks out there - platformio, FreeRTOS, etc. and, very important: learn the Tooling And Methodology techniques that these frameworks manifest.

    * Invest some workbench time in the RETRO Computing Scene. Seriously, you can still learn extremely valuable principles of tooling and methodology from an 8-bit retro system from the 80's. Get your favourite platform, get all its tools onboard, engage with its community - you will learn a lot of things that are still entirely relevant, in spite of the changes over the decades.

    * Get into the F/OSS tooling/methdology flow - find software projects that are interesting to you, find their repositories, learn to clone and build and test locally, and so on. There are so many fantastic projects out there for which low-level skills can be developed/fostered. Get onboard with something that interests you.

    Good luck!

  • Compiler Explorer
    1 project | news.ycombinator.com | 30 May 2024
  • C++: freeing resources in destructors using helper functions
    1 project | dev.to | 28 May 2024
    Now, let's figure out what the issue is. We'll use the synthetic code and the Compiler Explorer website to quickly explore how the code works.
  • Enlightenmentware
    22 projects | news.ycombinator.com | 20 May 2024
    I would say the compiler explorer[0] fits the definition perfectly. It may seem like a straightforward piece of software, but it has immensely changed the way people discuss and share knowledge around compilers and performance optimization.

    I regularly feel the impact on the quality of forum discussions. There's a lot less speculation about if "call X gets inlined", or "Y gets vectorized". Bold claims can be supported or disproven quickly by sharing a link.

    And then you have tools like llvm-mca[1] or uiCA[2], if you don't mind going into the weeds.

    [0] https://godbolt.org/

    [1] https://llvm.org/docs/CommandGuide/llvm-mca.html

    [2] https://uica.uops.info/

  • Gio UI – Cross-Platform GUI for Go
    15 projects | news.ycombinator.com | 18 May 2024
    Sure, here you go:

    https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...

  • What if null was an Object in Java?
    3 projects | news.ycombinator.com | 28 Apr 2024
    At least on android arm64, looks like a `dmb ishst` is emitted after the constructor, which allows future loads to not need an explicit barrier. Removing `final` from the field causes that barrier to not be emitted.

    https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...

  • Ask HN: Which books/resources to understand modern Assembler?
    6 projects | news.ycombinator.com | 21 Apr 2024
  • 3rd Edition of Programming: Principles and Practice Using C++ by Stroustrup
    6 projects | news.ycombinator.com | 19 Apr 2024
    You said You won't get "extreme performance" from C++ because it is buried under the weight of decades of compatibility hacks.

    Now your whole comment is about vector behavior. You haven't talked about what 'decades of compatibility hacks' are holding back performance. Whatever behavior you want from a vector is not a language limitation.

    You could write your own vector and be done with it, although I'm still not sure what you mean, since once you reserve capacity a vector still doubles capacity when you overrun it. The reason this is never a performance obstacle is that if you're going to use more memory anyway, you reserve more up front. This is what any normal programmer does and they move on.

    Show what you mean here:

    https://godbolt.org/

    I've never used ISPC. It's somewhat interesting although since it's Intel focused of course it's not actually portable.

    I guess now the goal posts are shifting. First it was that "C++ as a language has performance limitations" now it's "rust has a vector that has a function I want and also I want SIMD stuff that doesn't exist. It does exist? not like that!"

    Try to stay on track. You said there were "decades of compatibility hacks" holding back C++ performance then you went down a rabbit hole that has nothing to do with supporting that.

movfuscator

Posts with mentions or reviews of movfuscator. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-11.
  • M/o/Vfuscator: The single instruction C compiler (2020)
    1 project | news.ycombinator.com | 29 Dec 2023
  • controversialOpinion
    2 projects | /r/ProgrammerHumor | 11 Dec 2023
    Everything can be reduced to assignments. https://github.com/xoreaxeaxeax/movfuscator
  • M/o/Vfuscator: The single instruction C compiler
    3 projects | news.ycombinator.com | 5 Nov 2023
  • Subtraction Is Functionally Complete
    3 projects | news.ycombinator.com | 7 Oct 2023
    However, the movfuscator as implemented does still require a sigaction(2) syscall to set up a signal handler, under the justifications that "it is not actually part of the program" and that "if we were in ring 0, we wouldn't need help from the kernel" [0]. However, the latter part seems a little dubious to me: without the help of the kernel running non-MOV instructions, you'd never be able to escape from 16-bit real mode into 32-bit protected mode, since you wouldn't be able to load a valid GDT with the LGDT instruction (as far as I am aware).

    [0] https://github.com/xoreaxeaxeax/movfuscator/blob/90a49f31219...

  • The bigger the interface, the weaker the abstraction
    2 projects | news.ycombinator.com | 29 Jul 2023
    I _think_ the idea is thinking of an "interface" as "something that you use as a way to interact with something from outside an abstraction". I'd summarize their argument as reasoning that if the goal of an abstraction is to avoid having to care about the internal details of something, an interface is a way to expose a subset of ways to interact with it, and the more you expand it, the more it exposes the internals of the thing being abstracted. I don't think they necessarily mean this only in terms of programming, but you could apply this argument to a programming language interface; if you use an interface for interacting with something instead of its direct functionality, each additional method you add to the interface exposes more details of the inner value, which makes it less of an abstraction.

    Assuming my interpretation is correct, I'm not sure I totally buy this argument because there doesn't seem to be an obvious way to define the "size" of an interface where it holds true. The naive way to define the size would be number of methods, but I'd argue that methods can vary so much in terms of the amount of cognitive overhead they "expose" to the user that it's not very meaningful. Consider the Movfuscator compiler[0], which compiles code into binaries only using MOV x86 instructions because it happens to be Turing complete; as complex as it might be to learn x86 assembly as a whole and start writing programs directly in it, I'm dubious that trying to do so only with MOV would somehow be easier. Put another way, an x86 instruction set that only contains the MOV instruction is not a "stronger" abstraction than the actual one because it _introduces_ complexity that doesn't exist in the original. Does adding an ADD instruction alongside MOV increase the strength of the abstraction, or weaken it? I don't think there's an answer that we'd immediately all agree on for this sort of thing.

    Ultimately, I think trying to measure interfaces through the number of methods they expose is similar to trying to measure code by the number of lines in it; while there are some extreme cases where we'd likely all agree (e.g. for a fizzbuzz implementation, having 10 lines of code is probably better than thousands of lines of code[1]), we can't really come up with a good objective metric because the "target" number is based on the complexity of what you're trying to define, and we don't have a way of quantifying that complexity. I think the ideas here are still super interesting though, not because they have definitive right or wrong answers, but because thinking about stuff like this overall improves one's ability to write good software for usage by other programmers.

    [0]: https://github.com/xoreaxeaxeax/movfuscator

  • The M/o/Vfuscator contains a complete mov-only floating point emulator. Since it is approximately 500,000 instructions, you must explicitly link to it if you need it
    2 projects | /r/programmingcirclejerk | 15 May 2023
  • Can the RISC instruction set be simplified even further?
    1 project | /r/hardware | 30 Apr 2023
    The mov instruction in x86-64 is Turing complete. Someone even made a C compiler using only mov.
  • This is definitely not the best way to initialize an array
    1 project | /r/programminghorror | 29 Apr 2023
    Are you sure they didn't use the MOVFUSCATOR?
  • Can every function defined in popular libraries/frameworks be traced back to primitive data types, conditional statements and loops?
    1 project | /r/learnprogramming | 16 Apr 2023
    Yep. In fact you can reduce everything to just one simple assembly instruction.
  • I am going to learn goto
    2 projects | /r/ProgrammerHumor | 16 Apr 2023

What are some alternatives?

When comparing compiler-explorer and movfuscator you can also consider the following projects:

{fmt} - A modern formatting library

demovfuscator - A work-in-progress deobfuscator for movfuscated binaries [Moved to: https://github.com/leetonidas/demovfuscator]

rust - Empowering everyone to build reliable and efficient software.

obfuscator

format-benchmark - A collection of formatting benchmarks

Molebox - MoleBox lets you convert your application into an all-sufficient stand-alone executable, containing everything needed: components, media assets, registry entries.

papers - ISO/IEC JTC1 SC22 WG21 paper scheduling and management

onelinerizer - Shamelessly convert any Python 2 script into a terrible single line of code

rustc_codegen_gcc - libgccjit AOT codegen for rustc

sectorlisp - Bootstrapping LISP in a Boot Sector

firejail - Linux namespaces and seccomp-bpf sandbox

Unity-game-hacking - A guide for hacking unity games

SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured