-
Notifications
You must be signed in to change notification settings - Fork 296
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Authoritative documentation of assembler for M1 machines? #38
Comments
It is an indeed excellent idea to make this an issue here, but I do not mind at all! Concerning macros and directives, I have no idea, and there does not seem to be a real interest at Apple to publish such documentation these days. Of course, all of this should be in the source code, but … "Code is Documentation" may not always work. That said, I try to bring the topic up as often as possible, and maybe the growing popularity of this repository will put some some weight behind it. Thank you for reminding me! |
Thanks for the kind words! I'm dismayed by the apparent lack of interest in having a completely documented toolchain by the folks on stackexchange, apple forums etc. Speaking of source code, is the source for the apple assembler actually published ? Apple claims everything is open source, but I have trouble finding the code, e.g. on https://opensource.apple.com/source/ I'm not above digging through it to answer my questions ;) |
Searching a bit, and given that Apple likes to point to the ARM documentation: How does this look for a start? https://developer.arm.com/documentation/100067/0611 |
That looks great, especially https://developer.arm.com/documentation/100067/0611/armclang-Integrated-Assembler. However, AFAIK, the apple assembler does not allow multiple statements in one line separated by ';', nor does this armclang documentation have any documentation on .set directives. There's also https://developer.arm.com/documentation/100068/0612/migrating-from-armasm-to-the-armclang-integrated-assembler/symbol-definition-directives and https://developer.arm.com/documentation/100068/0612/migrating-from-armasm-to-the-armclang-integrated-assembler/overview-of-differences-between-armasm-and-gnu-syntax-assembly-code?lang=en This seems to indicate that the new clangarm assembler follows the gnu as. |
seems to contain the good stuff. |
I got what I needed to work and the major stumbling stones were
I'm still waiting to hear from apple, but I'm not sure anything will be forthcoming - they have escalated twice to another developer rep and then clammed up. Maybe OK to close this issue ? |
Apparently, there is another 'as' as part of the cctools project. That seems to be based on an ancient 'gas' codebase. Maybe it's worthwhile building it, at least so one has a working assembler with a source. If someone does successfully build and run that assembler, it would be great to update this issue. https://github.com/apple-oss-distributions/cctools/tree/cctools-973.0.1/as And, I think I found the modifications to llvm for the assembler: At least, LLLexer.cpp has the code to handle semicolons as comments. So I assume that one could mix these Apple llvmCore contributions into the official llvmCore project, and then build an 'as' binary that's identical to Apple's 'as'. If someone does, please drop instructions here :) |
This would make a good discussion entry, as it is not really an issue with the code base. Perhaps the repo could turn on discussions and move the thread there so it isn’t lost. |
I really appreciate this repository, and this isn't an issue with it as such, but I wanted to ask if anyone here can provide an actual documentation page for the assembler apple uses. It seems the mac OS X Assembler guide (old copy at http://personal.denison.edu/~bressoud/cs281-s07/Assembler.pdf )is out of date, and there isn't a meaningful guide for clang llvm assmbler (I guess, that's because it's a framework, not an assembler with macros and directives).
I sortof managed to muddle through some of the problems, but there are differences between apple's old documentation and the gas manual. E.g. macros - they can take named parameters. But you can't redefine symbols with .set (which is sometimes quite useful). I'd be great to have an authoritative manual, or alternatives to the apple assembler. E.g., is there a yasm etc that can be used ? I asked around in other places, but not much success yet.
I'm hesitant to make this an issue here, as this isn't y'all's fault. However, it seems y'all had to figure some of this out and it would be great to share any expertise you might have. If this is an unreasonable imposition, please feel free to close this without a comment.
Many thanks in advance.
The text was updated successfully, but these errors were encountered: