.balign 4096
pagestart: // a page-aligned reference at some earlier point.
nop
.skip 5680
nop // some arbitrary amount of code after it, perhaps more than a page.
.skip 4096 - (. - pagestart) % 4096 - blocksize // pad to blocksize before end of page
blockstart:
add x1, x1, x2
add x2, x2, x3
// 4k boundary here
blockend:
.equ blocksize, blockend - blockstart
nop // more code
1条答案
按热度按时间5vf7fwbs1#
如果您知道先前的4k对齐点,则可以执行此操作,但这些工具无法轻松避免浪费大量空间。
一月一日与一月一日
所以这需要0到4092字节的填充,取决于块的大小。这些大小需要是汇编时常量,而不仅仅是链接时**,因为我不认为重定位条目可以表达
%
模。或者即使没有它,也可能不表达减法和变量大小跳过。这对我在Linux上的
clang -target arm64-macos -c foo.s
不起作用,所以我不确定它是否可以用于Mach-O 64对象文件。