Commit Graph

105 Commits

Author SHA1 Message Date
gingerBill
a2d9ca8697 Remove unneeded hash maps when you can store the data directly on the nodes 2026-08-24 22:25:53 +01:00
gingerBill
7fcf65d2c2 asm: General clean up of the CFG code and remove redundant calculations 2026-08-24 22:17:31 +01:00
gingerBill
322f59dae0 Implement a CFG for the assembler to improve the soundness of the checks 2026-08-24 21:49:32 +01:00
gingerBill
b69e61983a Mock out the data structures for working on a CFG for asm 2026-08-24 19:52:56 +01:00
gingerBill
3e159a4e10 Add #no_init suffix directive for asm specifications. 2026-08-24 19:10:32 +01:00
gingerBill
dfa473f2c8 Minor grammar fix in error message 2026-08-24 18:20:12 +01:00
gingerBill
9ae9a9bf99 asm: Add support for constraint checks such as division by zero or overshifting 2026-08-24 18:18:28 +01:00
gingerBill
9367fa2ec2 Even more general clean ups 2026-08-24 16:58:37 +01:00
gingerBill
670b996f91 Minor clean ups 2026-08-24 16:43:36 +01:00
gingerBill
13558978be Fix typo 2026-08-24 16:40:02 +01:00
gingerBill
427d300562 asm: minor cleanups 2026-08-24 16:39:23 +01:00
gingerBill
171bdaf378 asm: check for undefined output parameters 2026-08-24 16:25:00 +01:00
gingerBill
e59da59826 Add support to check if an output is being read before it is written to; fix -vet-unused on input parameters 2026-08-24 16:14:25 +01:00
gingerBill
2f588e0329 Correct clobbering for instructions which did not write actually write to memory 2026-08-24 12:20:45 +01:00
gingerBill
7ebc5c462e Correct #pure checking for internal branches and effect volatility 2026-08-24 11:57:34 +01:00
gingerBill
c3c3aa1533 Add #pure directive for asm templates 2026-08-24 11:46:07 +01:00
gingerBill
2f2ab370e0 Fix the actual check for reading from a register that has not be written to yet 2026-08-24 10:37:59 +01:00
gingerBill
cebceb9bb2 Merge branch 'master' into asm_rip_width 2026-08-24 09:31:54 +01:00
kalsprite
b6c64c28b5 Diagnose in an asm template instead of aborting with SIGILL 2026-08-23 22:36:57 -07:00
kalsprite
deb45f3e6a asm named slots 2026-08-23 21:34:31 -07:00
gingerBill
4247507dd5 - to / 2026-08-22 19:39:10 +01:00
gingerBill
7bd1c9d160 Improve implicit register printing for read-writes, writes, reads 2026-08-22 19:36:47 +01:00
gingerBill
a2013cfccd Trim trailing whitespace on pretty printed forms 2026-08-22 19:00:00 +01:00
gingerBill
89cbcf958d For forms which only take immediates or nothing at all, add a comment stating what they implicitly read and write from 2026-08-22 18:59:14 +01:00
gingerBill
0ba2328c32 Remove debug code 2026-08-22 18:48:13 +01:00
gingerBill
0427b18d70 Simplify error block logic for printing mnemonic forms 2026-08-22 18:44:33 +01:00
gingerBill
f3cbeb909c Add some capitalization 2026-08-22 18:40:48 +01:00
gingerBill
eb380fc4fa Give good error messages for possible forms for the mnemonics 2026-08-22 18:39:18 +01:00
gingerBill
cbbb84cd2b Begin work on printing all of the forms of a specific mnemonic 2026-08-22 17:41:25 +01:00
gingerBill
629f7b5098 Support all pointer-like types not just actual pointers 2026-08-21 16:27:46 +01:00
gingerBill
c26aa48ca5 Support + - and ~ unary operators for asm operands 2026-08-21 16:01:49 +01:00
gingerBill
c6a4dd08fc Add typename to keep clang happy 2026-08-21 15:57:45 +01:00
gingerBill
83f5cd8767 Add extra check for scratch parameters with no other parameters 2026-08-21 15:45:23 +01:00
gingerBill
648c418fc4 Restrict riscv to only allow [base + disp] (i.e. disallow index*scale style things) 2026-08-21 14:31:58 +01:00
gingerBill
4a4a5045f8 Check for float register width exactly for risc-v frontend 2026-08-21 12:19:02 +01:00
gingerBill
a604ddceb1 Support pseudo macro mnemonics (for RISC-V) in the frontend 2026-08-21 11:47:41 +01:00
gingerBill
d0fb380c20 Support riscv _aq _rl _aqrl suffixes for mnemonics 2026-08-21 01:05:47 +01:00
gingerBill
acb6c1408f Remove unneeded typename usage 2026-08-21 00:39:26 +01:00
gingerBill
de8c0dc4fe Fix register width test for risc-v, and improve operand slot type inference for risc-v 2026-08-21 00:38:34 +01:00
gingerBill
09204e8982 Correct risc-v aliases 2026-08-20 19:48:30 +01:00
gingerBill
7a7bfea0bd Begin work on pseudo mnemonics in the checker 2026-08-20 19:12:44 +01:00
gingerBill
84f9bc76f9 Mockout inline asm for riscv 2026-08-20 14:42:42 +01:00
gingerBill
b82fa18cb3 Fix typo 2026-08-20 10:16:34 +01:00
gingerBill
5d873a4b8c Update assert 2026-08-20 09:58:32 +01:00
gingerBill
63918fe1fe Remove debug code 2026-08-20 09:54:50 +01:00
gingerBill
baae2636b8 Add support for x86 mnenomics in and out 2026-08-20 09:53:28 +01:00
gingerBill
7a6f70ba31 False positives: Ignore the out pinned parameters for the time being 2026-08-19 17:34:14 +01:00
gingerBill
2873e323c7 Fix #align_stack redundancy checks 2026-08-19 14:52:35 +01:00
gingerBill
5e165d2393 Add even more diagnostics for pinned registers; and begin work on redundant #align_stack checks 2026-08-19 14:50:08 +01:00
gingerBill
7638ac1bd4 Add more checks for flag clobbering 2026-08-19 14:09:46 +01:00