• 0 Posts
  • 18 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle



  • Mostly the missing listing of clobbered registers. Other than that it’s mostly just that you’re doing useless things, like manually putting the stuff into the registers instead of letting the compiler do it, and the useless push and pop. And the loop is obviously not needed and would hurt performance if you do every write like that.

    asm!(
    "syscall",
    in("rax") 1,
    in("rdi") 1,
    in("rsi") text_ptr,
    in("rdx") text_size,
    
    )
    

    (“so many” was inappropriate, sorry.)















  • If people want me to write into my code what it does, I guess I’ll label everything:

    #include <iostream>
    #include <cstdint>
    
    #pragma GCC diagnostic ignored "-Wunused-label"
    
    int main()
    {
    A:int a = 4;
    B:if ((uintptr_t)&a & 0x100)
    BA:std::cout << "hi" << std::endl; else
    BB:std::cout << "hello" << std::endl;
    C:return 0;
    }
    

    Note that this is much better for code style because - as opposed to the semicolon indentation- the single statement if and else branches still work. The trailing else is on the same line on purpose, it’s so small it doesn’t need its own line. Here’s another style with similar properties:

    [[,]]int a = 4;
    [[,]]if ((uintptr_t)&a & 0x100)
    [[,,]]std::cout << "hi" << std::endl; else
    [[,]]std::cout << "hello" << std::endl;
    [[,]]return 0;