You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取NASM中结构体的长度?

获取NASM结构体的长度

针对你给出的结构体定义:

section .bss
    struc mystruc
        .x: resb 1
        .y: resb 1
    endstruc

NASM不会自动生成结构体长度的符号,需要手动定义,常用两种可靠方法:

  • 方法一:在结构体内部显式定义长度字段
    修改结构体定义,在末尾添加用equ计算的长度字段,后续可直接通过结构体名访问:

    section .bss
        struc mystruc
            .x: resb 1
            .y: resb 1
            .size: equ $ - mystruc  ; $ 代表当前汇编位置,减去结构体起始偏移得到总长度
        endstruc
    

    使用时直接引用mystruc.size即可获取长度(此处结果为2)。

  • 方法二:在结构体外部定义长度符号
    若不想修改结构体内部结构,可在endstruc之后单独定义长度符号:

    section .bss
        struc mystruc
            .x: resb 1
            .y: resb 1
        endstruc
        mystruc_size equ $ - mystruc  ; 此时 $ 对应结构体结束后的位置
    

    使用时引用mystruc_size即可。

这两种方法的优势在于,后续修改结构体成员(比如调整成员大小、新增成员)时,长度会自动更新,无需手动计算,避免出错。

内容的提问来源于stack exchange,提问作者JustFast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:05:48