Skip to content
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

Status of EM languages #292

Open
rochus-keller opened this issue Jan 17, 2024 · 2 comments
Open

Status of EM languages #292

rochus-keller opened this issue Jan 17, 2024 · 2 comments

Comments

@rochus-keller
Copy link

Does anyone know, whether the documentation in https://tack.sourceforge.net/olddocs/em.pdf of the EM language family is still precise and representative enough for the recent version of the toolkit (i.e. the most recent commit on the default branch, or the 6.0pre5 release)? If not, how about the old 5.6 release? If I would use the mentioned document to build a new front or back end creating or using the specified EM, would it still work with the rest of the tools?

@davidgiven
Copy link
Owner

Yup, it's still accurate. We haven't made any spec changes (that I can remember!) since then.

If you're interested in doing either, there's a robust EM reading/writing library supplied. See https://github.com/davidgiven/ack/blob/default/modules/src/em_mes/em_mes.3 for the writer and https://github.com/davidgiven/ack/blob/default/modules/src/read_em/read_em.3 for the reader. It's not as trivial as it sounds because EM files can have two different encodings depending on whether you want plain text or binary.

@rochus-keller
Copy link
Author

Great, thanks.

Somewhere you wrote that the generated code is good enough for CISC, but bad for RISC. How about the peephole and global optimizer? Is the resulting EM code significantly more efficient? Are there any performance results, e.g. on a CISC machine with and witouth the EM optimizer stages?

Has anyone ever tried to reuse the TCC backend, i.e. feed EM code to the TCC code generator? That would make all TCC backends accessible in one batch (i.e. i386, AMD64, arm, arm64, Risc-V).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants