absCallAndPrintAbsAsLd.s
里边的内容如下:
.section .data
stringToShow:
.ascii "The abs of number is %d\n\0"
.global _start
.section .text
_start:
pushq %rbp
movq %rsp,%rbp
movq $-5,%rdi
call abs
movq $stringToShow,%rdi
movq %rax,%rsi
call printf
popq %rbp
movq %rax,%rdi
movq $0x3c,%rax
syscall
as -g absCallAndPrintAbsAsLd.s -o absCallAndPrintAbsAsLd.o
进行汇编。ld -g absCallAndPrintAbsAsLd.o -o absCallAndPrintAbsAsLd -lc -I /usr/lib64/ld-linux-x86-64.so.2
进行链接。./absCallAndPrintAbsAsLd
执行报错Segmentation fault
。
我把rsp
中的地址加上8之后,就不报错了,因为这属于平栈了。文章来源:https://www.toymoban.com/news/detail-821294.html
.section .data
stringToShow:
.ascii "The abs of number is %d\n\0"
.global _start
.section .text
_start:
pushq %rbp
movq %rsp,%rbp
movq $-5,%rdi
call abs
subq $8,%rsp
movq $stringToShow,%rdi
movq %rax,%rsi
call printf
addq $8,%rsp
popq %rbp
movq %rax,%rdi
movq $0x3c,%rax
syscall
as -g absCallAndPrintAbsAsLd.s -o absCallAndPrintAbsAsLd.o
进行汇编。ld -g absCallAndPrintAbsAsLd.o -o absCallAndPrintAbsAsLd -lc -I /usr/lib64/ld-linux-x86-64.so.2
进行链接。./absCallAndPrintAbsAsLd
执行
文章来源地址https://www.toymoban.com/news/detail-821294.html
到了这里,关于64位AT&T汇编语言as汇编ld链接,执行报错Segmentation fault的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!