summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibX86/Instruction.h
AgeCommit message (Collapse)Author
2022-07-12LibX86: Convert register names to StringViewssin-ack
2022-04-06LibX86: Add CMPXCHG8B, RDRAND and RDSEEDHendiadyoin1
With this we can run following script with no errors: ```sh for /usr/lib/*.so { disasm "$it" > /dev/zero } ```
2022-04-06LibX86: Support SSE2 :^)Hendiadyoin1
This allows disassembly of binaries with SSE2 instructions in them. SSE2 also extends all MMX instructions without affecting the mnemonic, therefore these are just directed to the same function for now. The UserspaceEmulator does not know this as of this commit.
2022-04-06LibX86: Mark MMX instructions as SSE instructionsHendiadyoin1
SSE2 expands on the same opcodes as MMX, so we have to mutate on prefix here.
2022-04-01Everywhere: Run clang-formatIdan Horowitz
2022-03-18Userland: Change static const variables to static constexprLenny Maiorani
`static const` variables can be computed and initialized at run-time during initialization or the first time a function is called. Change them to `static constexpr` to ensure they are computed at compile-time. This allows some removal of `strlen` because the length of the `StringView` can be used which is pre-computed at compile-time.
2022-03-13Libraries: Use default constructors/destructors in LibX86Lenny Maiorani
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules "The compiler is more likely to get the default semantics right and you cannot implement these functions better than the compiler."
2021-12-23LibX86: Mark two InstructionDescriptor functions as constHendiadyoin1
Thanks clang-tidy
2021-10-17LibX86: Add SSE supportHediadyoin1
This only adds the decodeing support for SSE, not SSE2, etc. may contain traces of SSE2.
2021-09-16LibX86: Use default instead of an empty constructor/destructorBrian Gianforcaro
Default implementations allow for more optimizations. See: https://pvs-studio.com/en/docs/warnings/v832/
2021-07-22LibX86: Add missing MovD and MovQ instructionsHendiadyoin1
These are placeholders for now
2021-07-22LibX86: Use names closer to the spec for the ModrmHendiadyoin1
This gets rid of a lot of magic number shifts and ands.
2021-06-30Debugger: Compile on x86_64Hendiadyoin1
This is not guaranteed to work at all
2021-05-31LibX86: Replace fprintf(stderr) with warnln()Linus Groh
2021-05-21Revert "Userland: static vs non-static constexpr variables"Linus Groh
This reverts commit 800ea8ea969835297dc7e7da345a45b9dc5e751a. Booting the system no longer worked after these changes.
2021-05-21Userland: static vs non-static constexpr variablesLenny Maiorani
Problem: - `static` variables consume memory and sometimes are less optimizable. - `static const` variables can be `constexpr`, usually. - `static` function-local variables require an initialization check every time the function is run. Solution: - If a global `static` variable is only used in a single function then move it into the function and make it non-`static` and `constexpr`. - Make all global `static` variables `constexpr` instead of `const`. - Change function-local `static const[expr]` variables to be just `constexpr`.
2021-05-01LibX86+UserspaceEmulator: Add MMX insns prototypesHendiadyoin1
2021-04-23UE+LibX86: Support bigger reads and writesHendiadyoin1
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-15Everything: Add `-Wnon-virtual-dtor` flagNicholas-Baron
This flag warns on classes which have `virtual` functions but do not have a `virtual` destructor. This patch adds both the flag and missing destructors. The access level of the destructors was determined by a two rules of thumb: 1. A destructor should have a similar or lower access level to that of a constructor. 2. Having a `private` destructor implicitly deletes the default constructor, which is probably undesirable for "interface" types (classes with only virtual functions and no data). In short, most of the added destructors are `protected`, unless the compiler complained about access.
2021-04-10AK+Everywhere: Make StdLibExtras templates less wrapper-yAnotherTest
This commit makes the user-facing StdLibExtras templates and utilities arguably more nice-looking by removing the need to reach into the wrapper structs generated by them to get the value/type needed. The C++ standard library had to invent `_v` and `_t` variants (likely because of backwards compat), but we don't need to cater to any codebase except our own, so might as well have good things for free. :^)
2021-03-09LibX86: Don't use "if (foo) [[unlikely]] { }" for now (to please clang)Andreas Kling
2021-03-09UserspaceEmulator+LibX86: Sprinkle some [[unlikely]] and ALWAYS_INLINEAndreas Kling
2021-02-23Everywhere: Rename ASSERT => VERIFYAndreas Kling
(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED) Since all of these checks are done in release builds as well, let's rename them to VERIFY to prevent confusion, as everyone is used to assertions being compiled out in release. We can introduce a new ASSERT macro that is specifically for debug checks, but I'm doing this wholesale conversion first since we've accumulated thousands of these already, and it's not immediately obvious which ones are suitable for ASSERT.
2021-02-02LibX86: Don't assert just because insn has no immediate bytesAndreas Kling
It's perfectly fine to not have immediate bytes. Many insns don't :^)
2021-01-31LibX86: sanity check for Instruction read sizeThomas Mangin
During "Emulator hacking: Let's make the userspace emulator go faster!", the switch implented in read() was inlined (toward the end of the video). This patch restore the assert check for any read other than 8, 16 or 32 bits was lost during the code conversion.
2021-01-12Libraries: Move to Userland/Libraries/Andreas Kling