- 论坛徽章:
- 1
|
本帖最后由 shihyu 于 2015-08-27 10:42 编辑
- .data # section declaration
- msg:
- .ascii "Hello, world!\n" # our dear string
- len = . - msg # length of our dear string
- .text # section declaration
- # we must export the entry point to the ELF linker or
- .global _start # loader. They conventionally recognize _start as their
- # entry point. Use ld -e foo to override the default.
- _start:
- # write our string to stdout
- movl $len,%edx # third argument: message length
- movl $msg,%ecx # second argument: pointer to message to write
- movl $1,%ebx # first argument: file handle (stdout)
- movl $4,%eax # system call number (sys_write)
- int $0x80 # call kernel
- # and exit
- movl $0,%ebx # first argument: exit code
- movl $1,%eax # system call number (sys_exit)
- int $0x80 # call kernel
复制代码 $ as -o hello.o hello.s
$ ld -o hello hello.o
$ ./hello
Hello, world!
我好奇是有办法 gcc -S 反汇编后产生的产生的hello.s 是无法透过 as & ld 产生执行文件?
|
|