在装配x86中对齐

问题描述

我在理解align时遇到问题。
我尝试运行以下命令:

section .data
align 4
xs: dw 0xA1A2
ys: db 0xB1,0xB2,0xB3,0xB4

看看每个字节是什么,我希望它是内存中的一个连续块,如下所示:

           for instance:    4      5    6    7     8    9     A     B
    (addr divisible by 4):[0xA2,0xA1,0x0,0xB1,0xB4]

为了使ys的地址可被4整除 相反,它更像是:

                            4      5    6      7     8    9     
    (addr divisible by 4):[0xA2,0xB4]

显然,我对align的工作方式有误解。任何人都可以清除一下吗?

解决方法

要获得所需的内容,需要将[1] "abc" "def" "ghi" [2] "abc" "ghi" "xyz" [3] "def" "ghi" "xyz" [4] "ghi" "xyz" "abc" [5] "abc" "def" "ghi" "xyz" [6] "def" "ghi" "jkl" "xyz" # (and so on) 指令直接放在align数据之前。另外,要使其使用零字节作为对齐数据,您必须明确指定它。 (默认值为90h ys。)像这样:

nop

这是因为该指令的意思是“继续前进,将所有数据与该边界对齐”。它的意思是“在此特定点将发射的数据一次与该边界对齐”。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...