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();
-
}
阅读(2007) | 评论(0) | 转发(0) |