开源软件名称(OpenSource Name):ish-app/ish开源软件地址(OpenSource Url):https://github.com/ish-app/ish开源编程语言(OpenSource Language):C 72.6%开源软件介绍(OpenSource Introduction):iSHA project to get a Linux shell running on iOS, using usermode x86 emulation and syscall translation. For the current status of the project, check the issues tab, and the commit logs.
HackingThis project has a git submodule, make sure to clone with You'll need these things to build the project:
Build for iOSOpen the project in Xcode, open iSH.xcconfig, and change Build command line tool for testingTo set up your environment, cd to the project and run To set up a self-contained Alpine linux filesystem, download the Alpine minirootfs tarball for i386 from the Alpine website and run You can replace LoggingiSH has several logging channels which can be enabled at build time. By default, all of them are disabled. To enable them:
Available channels:
A note on the JITPossibly the most interesting thing I wrote as part of iSH is the JIT. It's not actually a JIT since it doesn't target machine code. Instead it generates an array of pointers to functions called gadgets, and each gadget ends with a tailcall to the next function; like the threaded code technique used by some Forth interpreters. The result is a speedup of roughly 3-5x compared to pure emulation. Unfortunately, I made the decision to write nearly all of the gadgets in assembly language. This was probably a good decision with regards to performance (though I'll never know for sure), but a horrible decision with regards to readability, maintainability, and my sanity. The amount of bullshit I've had to put up with from the compiler/assembler/linker is insane. It's like there's a demon in there that makes sure my code is sufficiently deformed, and if not, makes up stupid reasons why it shouldn't compile. In order to stay sane while writing this code, I've had to ignore best practices in code structure and naming. You'll find macros and variables with such descriptive names as So a warning: Long-term exposure to this code may cause loss of sanity, nightmares about GAS macros and linker errors, or any number of other debilitating side effects. This code is known to the State of California to cause cancer, birth defects, and reproductive harm. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论