当前位置: 技术问答>linux和unix
几个汇编语句如何解释
来源: 互联网 发布时间:2016-10-04
本文导语: 我将hello, world! 程序编译为汇编代码,结果如下: .file "tst6.c" .section .rodata .LC0: .string "Hello, world!" .text .globl main .type main, @function main: ...
我将hello, world! 程序编译为汇编代码,结果如下:
.file "tst6.c"
.section .rodata
.LC0:
.string "Hello, world!"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $4, %esp
subl $12, %esp
pushl $.LC0
call puts
addl $16, %esp
movl $0, %eax
movl -4(%ebp), %ecx
leave
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2"
.section .note.GNU-stack,"",@progbits
其他语句大致知道意思,但后面几句有几个问题:
1. .size指令是何意思,.-main是什么?
2. ".section .note.GNU-stack,"",@progbits"一句定义了什么样的段,@progbits是什么,代表什么含义?
谢谢了!
.file "tst6.c"
.section .rodata
.LC0:
.string "Hello, world!"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $4, %esp
subl $12, %esp
pushl $.LC0
call puts
addl $16, %esp
movl $0, %eax
movl -4(%ebp), %ecx
leave
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2"
.section .note.GNU-stack,"",@progbits
其他语句大致知道意思,但后面几句有几个问题:
1. .size指令是何意思,.-main是什么?
2. ".section .note.GNU-stack,"",@progbits"一句定义了什么样的段,@progbits是什么,代表什么含义?
谢谢了!
|
没有学过汇编。以下只是猜测。
1. .size main 计算 main函数的size( . - main 当前地址减去main的地址)
2. 真的就不懂了期待汇编高手
1. .size main 计算 main函数的size( . - main 当前地址减去main的地址)
2. 真的就不懂了期待汇编高手