assembly - 如何使 .equ 指令全局化,以便可以在其他文件中使用?
问题描述
作为一个玩具项目,我正在构建一些项目,只使用 ARM64。我有一个名为pairs.s 的文件,其中包含某种结构/类的实现,我有一个名为pairs_size 的.equ 指令,它定义了该类的大小,我想在另一个.s 文件中使用该类,所以在哪里pair 类在另一个类中使用,所以我需要在编译时通过添加两个类的大小来计算该类的大小:
这是pairs.s:
.global pairs_ctor
.global pairs_ctor_dynamic
.equ constant_power_pair_size, 16
.equ constant_power_pair_power_offset, 0
.equ constant_power_pair_constant_offset, 8
that is the .equ I would like to use in another file
**.equ pairs_size, 40**
.equ pairs_pairs_offset, 0
.equ pairs_count_offset, 8
.equ pairs_capacity_offset, 16
.equ pairs_single_power_offset, 24
.equ pairs_single_constant_offset, 32
// pairs* pairs_ctor_dynamic();
pairs_ctor_dynamic:
stp x29, x30, [sp, -16]!
stp d0, d1, [sp, -16]!
mov x0, pairs_size
bl malloc
ldp d0, d1, [sp], 16
ldp x29, x30, [sp], 16
// void pairs_ctor(_ x0 : pairs*, _ d0 : power, _ d1 : constant);
pairs_ctor:
add x1, x0, pairs_single_power_offset
str x1, [x0, pairs_pairs_offset]
mov x1, 1
stp x1, x1, [x0, pairs_count_offset] // count = capacity = 1
str d0, [x0, pairs_single_power_offset]
str d1, [x0, pairs_single_constant_offset]
ret
另一个文件是例如ASTX.s:
ASTX_vtable:
.quad ASTX_evaluate
.quad ASTX_derivative
.quad ASTX_toString
// unfortunately that line doesn't compile!
**.equ ASTX_size, 16+pairs_size**
解决方案
推荐阅读
- html - html视频去除黑底阴影
- ios - 从数据库中检索数据并显示?IOS
- git - “没有工作树就不能使用 git-mergetool”和其他 git 问题
- javascript - 如果 Keycloak 身份验证是在 Apache 级别而不是前端应用程序上完成的,有没有办法获取用户数据
- oop - 接口方法调用错误:方法未知或受保护或私有
- vuejs2 - 将javascript模块导入vue组件的标准方法
- azure - Azure 应用程序网关 - 未知错误。请再试一次
- react-native - 如何从嵌套堆栈导航器导航到选项卡导航器中的特定页面
- cordova - 科尔多瓦文件系统覆盖字符串
- r - R 中的 XGBoost 解释器 - 如何对特征贡献实施约束?