首页 > 解决方案 > 如何正确使用 .bss 内存部分(用于全局变量)进行汇编(armv8)程序?

问题描述

这是我在我的代码上写它的方式:

     .section .text
fmt:          .string "x \t\t ln(x)\n"
sfmt:         .string "%.10lf \t %.10lf\n"
error:        .string "Error"
filename:     .string "input.bin"

     .section .data
LIM:          .double 0r1.0E-13
zero:         .double 0r0.0
one:          .double 0r1.0
half:         .double 0r0.5
x_arr:        .skip   98*8

...(我认为运行良好的其余代码。我隔离了这部分,因为这是在我编译+链接+运行我的可执行文件时导致分段错误的部分。此外,x_arr 最初位于 .bss 部分,但我保留在获得段错误时,每当我尝试在 gdb 中进行布局注册时,什么都没有出现。)

可能导致整个程序出现问题的其余代码:

define(i_r,w19)
define(j_r,w20)
define(n_r,w21)
define(fd_r,w22)
define(ln_x,w8)
define(cur_term,d9)
define(n_read,x25)
define(x_j,d10)

BUF_SIZE = 98*8
AT_FDCWD = -100
O_RDONLY = 0
ln_size = 8
cur_term_size = 8
x_j_size = 8

fp    .req    x29
lr    .req    x30

alloc = -(16+ln_size+cur_term_size+x_j_size) & -16
dealloc = -alloc

      .balign 4
      .global main
      .type main,%function

main:    stp    fp,lr,[sp,alloc]!
         mov    fp,sp

         ldp    fp,lr,[sp],dealloc
         ret

标签: cassemblyarmv8

解决方案


推荐阅读