汇编实现hello world程序

1950阅读 0评论2017-03-22 rexrock23
分类:C/C++

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

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

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

源码:

点击(此处)折叠或打开

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

  3. #ifdef __x86_64__
  4. void m_print()
  5. {
  6.     asm volatile(
  7.         "syscall"
  8.         :
  9.         :"a"(1), "D"(0), "S"(str), "d"(12)
  10.         );
  11. }

  12. void m_exit()
  13. {
  14.     asm volatile(
  15.         "syscall"
  16.         :
  17.         :"a"(60), "D"(EXITNO)
  18.         );
  19. }
  20. #else
  21. void m_print()
  22. {
  23.     asm volatile(
  24.         "int $0x80"
  25.         :
  26.         :"a"(4), "b"(0), "c"(str), "d"(13)
  27.         );
  28. }

  29. void m_exit()
  30. {
  31.     asm volatile(
  32.         "int $0x80"
  33.         :
  34.         :"a"(1), "b"(EXITNO)
  35.         );
  36. }
  37. #endif

  38. int main()
  39. {
  40.     m_print();
  41.     m_exit();
  42. }
上一篇:QUAGGA ZEBRA : ospf6d
下一篇:使用kubeadm搭建k8s环境