C内嵌汇编实现hello world程序,手动执行ld进行静态链接,不依赖任何库

编译:
gcc -c write.c
-c : 编译和汇编,不进行链接

链接:
ld -static -e main -o write ./write.o
-static : 静态链接
-e main : 执行程序入口函数

#define EXITNO 23
const char *str = "Hello world\n";

#ifdef __x86_64__
void m_print()
{
    asm volatile(
        "syscall"
        :
        :"a"(1), "D"(0), "S"(str), "d"(12)
        );
}

void m_exit()
{
    asm volatile(
        "syscall"
        :
        :"a"(60), "D"(EXITNO)
        );
}
#else
void m_print()
{
    asm volatile(
        "int $0x80"
        :
        :"a"(4), "b"(0), "c"(str), "d"(13)
        );
}

void m_exit()
{
    asm volatile(
        "int $0x80"
        :
        :"a"(1), "b"(EXITNO)
        );
}
#endif

int main()
{
    m_print();
    m_exit();
}