Mondjuk a 'gas'-nak sikerül: gas -a64 -mpower7 crypto/bn/ppc64-mont-fixed.s
Olvasmány: https://www.ibm.com/docs/en/ssw_aix_72/assembler/assembler_pdf.pdf
The .align pseudo-op is normally used in a control section (csect) that contains data.If the Number parameter evaluates to 0, alignment occurs on a byte boundary. If the Number parameterevaluates to 1, alignment occurs on a halfword boundary. If the Number parameter evaluates to 2,alignment occurs on a word boundary. If the Number parameter evaluates to 3, alignment occurs on a doubleword boundary.
.align 0 -- DS 0C a /360-as szintaxissal mondva
.aling 1 -- DS 0H
.align 2 -- DS 0F
.align 3 -- DS 0D
Itt egy kolléga: https://stackoverflow.com/questions/21546946/what-does-p2align-do-in-as…
Megfejtés: https://sourceware.org/binutils/docs/as/P2align.html
.p2align 5,,31 -- 32-byte határra illessze, de csak akkor, ha ezt legfeljebb 31 byte beillesztésével meg tudja oldani.
A source eleje ilyen:
.machine "any"
.csect .text[PR],7
.align 5
.p2align 5,,31
Ebből arra gondolok, hogy rosszul néztem a leírást, és a .align is tud 32-bájtos határra illeszteni. És valóban, azt írja, hogy:
Number: Specifies an absolute expression that evaluates to an integer value from 0 to 12, inclusive.The value indicates the log base 2 of the desired alignment. For example, an alignment of 8 (a doubleword) would be represented by an integer value of 3; an alignment of 4096 (one page) would be represented by an integer value of 12.
Szerk:
a .cfi_startproc és .cfi_endproc sincs az ínyére