如何解决在装配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
这是因为该指令不的意思是“继续前进,将所有数据与该边界对齐”。它的意思是“在此特定点将发射的数据一次与该边界对齐”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。