summary refs log tree commit diff stats
path: root/lib/pure/complex.nim
Commit message (Expand)AuthorAgeFilesLines
* [backport] fix #12528, fix #12525: incorrect generic type resolution for defa...Andreas Rumpf2019-10-281-0/+3
* [backport] run nimpretty on numbers stuffnarimiran2019-09-301-21/+21
* fixes #11834 (#12000)Palash Nigam2019-08-231-1/+1
* complex.nim: reformating [other]Andreas Rumpf2019-06-091-6/+2
* fix #9639 (#9640)Arne Döring2018-11-071-1/+1
* Generic Complex type (#9590)Arne Döring2018-11-051-317/+329
* Add imaginary unit. (#7922)Koki Fushimi2018-06-011-0/+4
* remove deprecated stuff from the stdlib; introduce better deprecation warningsAraq2018-05-051-2/+0
* lib: Trim .nim files trailing whitespaceAdam Strzelecki2015-09-041-4/+4
* Fix buggy rect(), doc comment, and unit test.Charles Blake2015-02-281-3/+4
* Addition of some complex hyperbolic functionsJonathan Edwards2015-02-281-0/+70
* Extend complex to convert to/from polar coordinatesdef2015-02-161-2/+25
* Added complex conjugategmpreussner2015-01-241-27/+33
* fixes #495Araq2014-12-261-4/+1
* more modules updatedAraq2014-08-281-44/+44
* big renameAraq2014-08-271-2/+4
* Add missing complex arithmetic procsdef2014-07-141-0/+39
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
* additions to complex moduleAraq2011-01-071-6/+205
* bugfix: complex.nim compilesAndreas Rumpf2010-04-041-2/+2
* Bugfix: empty echo statementAndreas Rumpf2010-03-201-1/+1
* fixed pango/pangoutils new wrappersAndreas Rumpf2010-02-261-0/+0
* continued work on html/xmlparserrumpf_a@web.de2010-02-141-0/+0
* added tools and web dirsAndreas Rumpf2009-09-151-0/+0
* version0.7.10Andreas Rumpf2009-06-081-0/+106
re>0c7f08ce ^
f15fcfe8 ^

469a1a9a ^
0c7f08ce ^




15655a12 ^









417a05ee ^
924ed08a ^
417a05ee ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
                                    


















































                                               
                                                    

                                                                                        

                                                                        





                                                                                                  







                                                                     
                                    







                             
                                                                  
                                                   
                                     
                                           
                              
                                                                
                        
                                  

                                 
                                                                                                   
                                                                                    

                                                                                            

                                                                            
                                                                                                      




                                                                                                   









                                                                                                                         
                                      
                                                                              


                                                                                
Opcodes currently supported by SubX:
  01: add r32 to rm32 (add)
  03: add rm32 to r32 (add)
  05: add imm32 to EAX (add)
  09: rm32 = bitwise OR of r32 with rm32 (or)
  0b: r32 = bitwise OR of r32 with rm32 (or)
  0d: EAX = bitwise OR of imm32 with EAX (or)
  21: rm32 = bitwise AND of r32 with rm32 (and)
  23: r32 = bitwise AND of r32 with rm32 (and)
  25: EAX = bitwise AND of imm32 with EAX (and)
  29: subtract r32 from rm32 (sub)
  2b: subtract rm32 from r32 (sub)
  2d: subtract imm32 from EAX (sub)
  31: rm32 = bitwise XOR of r32 with rm32 (xor)
  33: r32 = bitwise XOR of r32 with rm32 (xor)
  35: EAX = bitwise XOR of imm32 with EAX (xor)
  39: compare: set SF if rm32 < r32 (cmp)
  3b: compare: set SF if r32 < rm32 (cmp)
  3d: compare: set SF if EAX < imm32 (cmp)
  40: increment EAX (inc)
  41: increment ECX (inc)
  42: increment EDX (inc)
  43: increment EBX (inc)
  44: increment ESP (inc)
  45: increment EBP (inc)
  46: increment ESI (inc)
  47: increment EDI (inc)
  48: decrement EAX (dec)
  49: decrement ECX (dec)
  4a: decrement EDX (dec)
  4b: decrement EBX (dec)
  4c: decrement ESP (dec)
  4d: decrement EBP (dec)
  4e: decrement ESI (dec)
  4f: decrement EDI (dec)
  50: push EAX to stack (push)
  51: push ECX to stack (push)
  52: push EDX to stack (push)
  53: push EBX to stack (push)
  54: push ESP to stack (push)
  55: push EBP to stack (push)
  56: push ESI to stack (push)
  57: push EDI to stack (push)
  58: pop top of stack to EAX (pop)
  59: pop top of stack to ECX (pop)
  5a: pop top of stack to EDX (pop)
  5b: pop top of stack to EBX (pop)
  5c: pop top of stack to ESP (pop)
  5d: pop top of stack to EBP (pop)
  5e: pop top of stack to ESI (pop)
  5f: pop top of stack to EDI (pop)
  68: push imm32 to stack (push)
  69: multiply rm32 by imm32 and store result in r32
  72: jump disp8 bytes away if lesser (unsigned), if CF is set (jcc/jb/jnae)
  73: jump disp8 bytes away if greater or equal (unsigned), if CF is unset (jcc/jae/jnb)
  74: jump disp8 bytes away if equal, if ZF is set (jcc/jz/je)
  75: jump disp8 bytes away if not equal, if ZF is not set (jcc/jnz/jne)
  76: jump disp8 bytes away if lesser or equal (unsigned), if ZF is set or CF is set (jcc/jbe/jna)
  77: jump disp8 bytes away if greater (unsigned), if ZF is unset and CF is unset (jcc/ja/jnbe)
  7c: jump disp8 bytes away if lesser (signed), if SF != OF (jcc/jl/jnge)
  7d: jump disp8 bytes away if greater or equal (signed), if SF == OF (jcc/jge/jnl)
  7e: jump disp8 bytes away if lesser or equal (signed), if ZF is set or SF != OF (jcc/jle/jng)
  7f: jump disp8 bytes away if greater (signed), if ZF is unset and SF == OF (jcc/jg/jnle)
  81: combine rm32 with imm32 based on subop (add/sub/and/or/xor/cmp)
  87: swap the contents of r32 and rm32 (xchg)
  88: copy r8 to r8/m8-at-r32
  89: copy r32 to rm32 (mov)
  8a: copy r8/m8-at-r32 to r8
  8b: copy rm32 to r32 (mov)
  8d: copy address in rm32 into r32 (lea)
  8f: pop top of stack to rm32 (pop)
  99: sign-extend EAX into EDX (cdq)
  b8: copy imm32 to EAX (mov)
  b9: copy imm32 to ECX (mov)
  ba: copy imm32 to EDX (mov)
  bb: copy imm32 to EBX (mov)
  bc: copy imm32 to ESP (mov)
  bd: copy imm32 to EBP (mov)
  be: copy imm32 to ESI (mov)
  bf: copy imm32 to EDI (mov)
  c1: shift rm32 by imm8 bits depending on subop (sal/sar/shl/shr)
  c3: return from most recent unfinished call (ret)
  c6: copy imm8 to r8/m8-at-r32 (mov)
  c7: copy imm32 to rm32 with subop 0 (mov)
  cd: software interrupt (int)
  d3: shift rm32 by CL bits depending on subop (sal/sar/shl/shr)
  e8: call disp32 (call)
  e9: jump disp32 bytes away (jmp)
  eb: jump disp8 bytes away (jmp)
  f4: halt (hlt)
  f7: negate/multiply/divide rm32 (with EAX and EDX if necessary) depending on subop (neg/mul/idiv)
  ff: increment/decrement/jump/push/call rm32 based on subop (inc/dec/jmp/push/call)
  0f 82: jump disp32 bytes away if lesser (unsigned), if CF is set (jcc/jb/jnae)
  0f 83: jump disp32 bytes away if greater or equal (unsigned), if CF is unset (jcc/jae/jnb)
  0f 84: jump disp32 bytes away if equal, if ZF is set (jcc/jz/je)
  0f 85: jump disp32 bytes away if not equal, if ZF is not set (jcc/jnz/jne)
  0f 86: jump disp32 bytes away if lesser or equal (unsigned), if ZF is set or CF is set (jcc/jbe/jna)
  0f 87: jump disp32 bytes away if greater (unsigned), if ZF is unset and CF is unset (jcc/ja/jnbe)
  0f 8c: jump disp32 bytes away if lesser (signed), if SF != OF (jcc/jl/jnge)
  0f 8d: jump disp32 bytes away if greater or equal (signed), if SF == OF (jcc/jge/jnl)
  0f 8e: jump disp32 bytes away if lesser or equal (signed), if ZF is set or SF != OF (jcc/jle/jng)
  0f 8f: jump disp32 bytes away if greater (signed), if ZF is unset and SF == OF (jcc/jg/jnle)
  0f 92: set r8/m8-at-rm32 to 1 if lesser (unsigned), if CF is set, 0 otherwise (setcc/setb/setnae)
  0f 93: set r8/m8-at-rm32 to 1 if greater or equal (unsigned), if CF is unset, 0 otherwise (setcc/setae/setnb)
  0f 94: set r8/m8-at-rm32 to 1 if equal, if ZF is set, 0 otherwise (setcc/setz/sete)
  0f 95: set r8/m8-at-rm32 to 1 if not equal, if ZF is not set, 0 otherwise (setcc/setnz/setne)
  0f 96: set r8/m8-at-rm32 to 1 if lesser or equal (unsigned), if ZF is set or CF is set, 0 otherwise (setcc/setbe/setna)
  0f 97: set r8/m8-at-rm32 to 1 if greater (unsigned), if ZF is unset and CF is unset, 0 otherwise (setcc/seta/setnbe)
  0f 9c: set r8/m8-at-rm32 to 1 if lesser (signed), if SF != OF, 0 otherwise (setcc/setl/setnge)
  0f 9d: set r8/m8-at-rm32 to 1 if greater or equal (signed), if SF == OF, 0 otherwise (setcc/setge/setnl)
  0f 9e: set r8/m8-at-rm32 to 1 if lesser or equal (signed), if ZF is set or SF != OF, 0 otherwise (setcc/setle/setng)
  0f 9f: set r8/m8-at-rm32 to 1 if greater (signed), if ZF is unset and SF == OF, 0 otherwise (setcc/setg/setnle)
  0f af: multiply rm32 into r32 (imul)
Run `bootstrap help instructions` for details on words like 'r32' and 'disp8'.
For complete details on these instructions, consult the IA-32 manual (volume 2).
There's various versions of it online, such as https://c9x.me/x86.
The mnemonics in brackets will help you locate each instruction.