Rev 1053 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1053 | Rev 1115 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | Visit http://flatassembler.net/ for more information. |
1 | Visit http://flatassembler.net/ for more information. |
Line 2... | Line 2... | ||
2 | 2 | ||
Line 3... | Line 3... | ||
3 | 3 | ||
Line 4... | Line 4... | ||
4 | version 1.67.35 (Mar 09, 2009) |
4 | version 1.68 (Jun 13, 2009) |
Line -... | Line 5... | ||
- | 5 | ||
- | 6 | [+] Added SSSE3 (Supplemental SSE3), SSE4.1, SSE4.2 and SSE4a instructions. |
|
Line -... | Line 7... | ||
- | 7 | ||
5 | 8 | [+] Added the AMD SVM and Intel SMX instructions. |
|
- | 9 | ||
Line 6... | Line 10... | ||
6 | [-] Some internal code size reductions. |
10 | [+] Added "rdmsrq", "wrmsrq", "sysexitq" and "sysretq" mnemonics for the |
Line -... | Line 11... | ||
- | 11 | 64-bit variants of respective instructions. |
|
- | 12 | ||
Line 7... | Line 13... | ||
7 | 13 | [+] Added "fstenvw", "fstenvd", "fsavew", "fsaved", "frstorw" and "frstord" |
|
Line 8... | Line -... | ||
8 | [-] Discontinued "-d" switch implementation. |
- | |
9 | - | ||
10 | - | ||
11 | version 1.67.34 (Feb 22, 2009) |
- | |
12 | - | ||
13 | [-] Fixed small bug with DT directive far pointer syntax. |
- | |
14 | - | ||
15 | - | ||
16 | version 1.67.33 (Feb 20, 2009) |
- | |
17 | - | ||
18 | [+] Added ERR directive that allows to signalize error from the source. |
- | |
19 | 14 | mnemonics to allow choosing between 16-bit and 32-bit variants of |
|
20 | - | ||
21 | version 1.67.32 (Feb 13, 2009) |
- | |
22 | - | ||
23 | [+] Allowed single quote character to be put inside the number value, |
- | |
24 | to help improve long numbers readability. |
- | |
25 | - | ||
26 | - | ||
27 | version 1.67.31 (Feb 11, 2009) |
- | |
28 | - | ||
29 | [-] Fixed floating point converter to no longer generate NaN in some cases, |
- | |
30 | and corrected denormal numbers generation. |
- | |
31 | - | ||
32 | - | ||
33 | version 1.67.30 (Feb 08, 2009) |
- | |
34 | - | ||
35 | [+] Added missing Intel SSE4 instructions. |
- | |
36 | - | ||
37 | [+] Added SSE4a (EXTRQ/INSERTQ/MOVNTSD/MOVNTSS) instructions. |
- | |
38 | - | ||
39 | [+] Added FSTENVW/FSTENVD/FSAVEW/FSAVED mnemonics. |
- | |
40 | - | ||
41 | - | ||
42 | version 1.67.29 (Nov 15, 2008) |
- | |
43 | - | ||
44 | [+] Added optional symbolic information output, and a set of tools that extract |
- | |
45 | various kinds of information from it. |
- | |
46 | - | ||
47 | [+] Allowed RVA operator to be used in COFF object format. |
- | |
48 | - | ||
49 | [-] Corrected the FIX directive to allow names of preprocessor's directives to be |
- | |
50 | used as prioritized symbolic constant name. |
- | |
51 | - | ||
52 | - | ||
53 | version 1.67.28 (Nov 06, 2008) |
- | |
54 | - | ||
55 | [+] Added EFI/EFIBOOT/EFIRUNTIME subsystem keywords for PE format (experimental |
- | |
56 | feature, still needs to be tested). |
- | |
57 | - | ||
58 | [-] Fixed a bug in preprocessor which caused some problems with DISPLAY directive |
- | |
59 | output in some cases. |
15 | structures used by the "fstenv", "fsave" and "frstor" instructions. |
60 | - | ||
61 | [-] Fixed a bug that allowed to define a symbol named "eip" or "rip". |
- | |
62 | - | ||
63 | [-] Fixed a problem with assembling MOVQ RAX,XMM0 instruction. |
- | |
64 | 16 | ||
65 | - | ||
66 | version 1.67.27 (Jul 12, 2008) |
- | |
67 | - | ||
68 | [-] Fixed a bug which caused instructions from JCXZ/LOOP family to be incorrectly |
- | |
69 | assembled when requiring 67h prefix and provided with "$" operand. |
- | |
70 | - | ||
71 | [-] Definition of macro with the same name as one of the preprocessor's directives |
- | |
72 | is no longer allowed. |
- | |
73 | - | ||
74 | [-] Fixed REPT directive to check out validity of its parameters even when the |
- | |
75 | count is zero. |
- | |
76 | - | ||
77 | [-] Fixed VMREAD/VMWRITE syntax in the USE64 mode. |
- | |
78 | - | ||
79 | [-] Corrected MZ header generation and handling for the case when the last page of |
- | |
80 | executable contains the round 512 bytes. |
- | |
81 | - | ||
82 | - | ||
83 | version 1.67.26 (Jan 27, 2008) |
- | |
84 | - | ||
85 | [+] Added partial SSE4 support (a couple of instructions left to be implemented |
- | |
86 | in the next releases) |
- | |
87 | - | ||
88 | [+] Added GETSEC instruction for the SMX functions calling. |
- | |
89 | - | ||
90 | [-] Some fixes and rearrangements in the DOS version. |
17 | [+] Added "plt" operator for the ELF output format. |
91 | - | ||
92 | - | ||
93 | version 1.67.25 (Dec 30, 2007) |
- | |
94 | - | ||
95 | [-] Fixed a couple of bugs related to undefined symbol error signaling. |
- | |
96 | - | ||
97 | - | ||
98 | version 1.67.24 (Dec 03, 2007) |
- | |
99 | - | ||
100 | [+] Added "-d" option to allow predefining symbolic constants from command line. |
- | |
101 | - | ||
102 | [-] Changed some of the error messages to be more informative. |
- | |
103 | - | ||
104 | - | ||
105 | version 1.67.23 (Sep 08, 2007) |
- | |
106 | - | ||
107 | [+] Added "static" keyword for the "public" directive in COFF format. |
- | |
108 | - | ||
109 | [-] Redirected error information into stderr. |
- | |
110 | - | ||
111 | - | ||
112 | version 1.67.22 (Aug 05, 2007) |
- | |
113 | - | ||
114 | [+] Allowed to check "@b" and "@f" symbols with "defined" operator. |
- | |
115 | - | ||
116 | [+] Allowed "as" operator to specify the output file extension when |
18 | |
117 | placed at the end of the "format" directive line. |
- | |
118 | - | ||
119 | [-] Fixed a bug with stack size declaration in PE64 format that |
- | |
120 | caused assembler to crash. |
- | |
121 | - | ||
122 | [-] Corrected the VMREAD and VMWRITE instructions to allow registers |
- | |
123 | in place of memory operands. |
- | |
124 | - | ||
125 | [-] Corrected a mistake that made PLT operator not work correctly with |
- | |
126 | the CALL instruction. |
- | |
127 | - | ||
128 | - | ||
129 | version 1.67.21 (Feb 17, 2007) |
- | |
130 | - | ||
131 | [+] Allowed 32-bit relocations in PE64 output format. |
- | |
132 | - | ||
133 | [-] Fixed a bug that caused "push cr0" error to go unnoticed by assembler. |
- | |
134 | - | ||
135 | - | ||
136 | version 1.67.20 (Feb 12, 2007) |
- | |
137 | - | ||
138 | [-] Corrected the range checking of signed address displacements in 64-bit mode. |
- | |
139 | - | ||
140 | - | ||
Line -... | Line 19... | ||
- | 19 | [+] Allowed "rva" operator to be used in MS COFF object format, and also |
|
- | 20 | added "static" keyword for the "public" directive. |
|
- | 21 | ||
- | 22 | [+] Added Intel-style aliases for the additional long mode 8-bit registers. |
|
Line 141... | Line 23... | ||
141 | version 1.67.19 (Feb 10, 2007) |
23 | |
Line 142... | Line 24... | ||
142 | 24 | [-] The PE formatter now automatically detects whether relocatable labels |
|
143 | [-] Disallowed labels starting with $ character. |
25 | should be used, depending on whether the fixups directory is placed |
144 | 26 | somewhere into executable by programer, or not. This makes possible the |
|
Line 145... | Line -... | ||
145 | [-] Fixed some problems with handling 32-bit relocations in 64-bit formats. |
- | |
146 | - | ||
147 | - | ||
148 | version 1.67.18 (Dec 27, 2006) |
- | |
149 | - | ||
150 | [-] Fixed a small mistake in the recent corrections of logical expression parser. |
- | |
151 | - | ||
152 | - | ||
153 | version 1.67.17 (Dec 20, 2006) |
- | |
154 | - | ||
155 | [-] Corrected the precedence of operators of macroinstruction line maker. |
- | |
156 | The symbol escaping now has always the higher priority than symbol conversion, |
- | |
157 | and both have higher precedence than concatenation. |
- | |
158 | - | ||
159 | [-] Fixed problems with logical expression parser to handle correctly comparing |
- | |
160 | values containing round brackets with the EQ or EQTYPE operator. |
- | |
161 | The only limitation now is that when you use round brackets to enclose some |
- | |
162 | logical expressions, they must be paired everywhere inside those expressions. |
- | |
163 | - | ||
164 | - | ||
165 | version 1.67.16 (Dec 17, 2006) |
- | |
166 | - | ||
167 | [-] Fixed a really old bug in register expression calculator. |
- | |
168 | 27 | more flexible use of the addressing symbols in case of PE executable fixed |
|
169 | - | ||
170 | version 1.67.15 (Nov 20, 2006) |
- | |
171 | - | ||
172 | [-] Some final (?) fixes and cleanup in the relative-offsets calculations. |
- | |
173 | - | ||
174 | - | ||
175 | version 1.67.14 (Oct 28, 2006) |
- | |
176 | - | ||
177 | [-] Another small bug fixes. |
- | |
178 | - | ||
179 | - | ||
180 | version 1.67.13 (Oct 26, 2006) |
- | |
181 | - | ||
182 | [-] Fixed a bug with handling of invalid expressions by "defined" operator. |
- | |
183 | - | ||
184 | [-] Fixed a newly-introduced bug with relocations in automatically generated RIP-relative |
- | |
185 | addressings. |
- | |
186 | - | ||
187 | - | ||
188 | version 1.67.12 (Oct 1, 2006) |
- | |
189 | - | ||
190 | [+] Added EIP-relative addressing, and fixed some bugs with RIP-related one aswell. |
- | |
191 | - | ||
192 | - | ||
193 | version 1.67.11 (Sep 26, 2006) |
- | |
194 | - | ||
195 | [+] Added PLT operator for the ELF output format. |
- | |
196 | - | ||
197 | [-] Rearranged and fixed some of the relocation handling routines. |
- | |
198 | - | ||
199 | - | ||
200 | version 1.67.10 (Sep 23, 2006) |
- | |
201 | - | ||
202 | [+] Added SSSE3 (Supplemental SSE3) instructions. |
- | |
203 | - | ||
204 | - | ||
205 | version 1.67.9 (Sep 21, 2006) |
- | |
206 | - | ||
207 | [+] Added some Win64 headers and examples in the Windows package. |
- | |
208 | - | ||
209 | [-] Fixed another operand size checking bug with MOVQ instruction. |
- | |
210 | - | ||
211 | - | ||
212 | version 1.67.8 (Sep 17, 2006) |
- | |
213 | - | ||
214 | [-] Fixed a bug in address processing that caused disallowed combinations like |
- | |
215 | [qword eax] to be accepted. |
- | |
216 | - | ||
217 | - | ||
218 | version 1.67.7 (Jul 31, 2006) |
- | |
219 | - | ||
220 | [-] Fixed a bug that caused over-repeated processing of macro operators when |
- | |
221 | many embedded macros were placed in one line |
- | |
222 | - | ||
223 | [+] Added SYSRETQ mnemonic. |
- | |
224 | - | ||
225 | - | ||
226 | version 1.67.6 (Jul 21, 2006) |
- | |
227 | - | ||
228 | [+] Added (not yet documented) RDMSRQ/WRMSRQ/SYSEXITQ mnemonics for the 64-bit |
- | |
229 | variants of respective instructions. |
- | |
230 | - | ||
231 | [+] Added information about memory allocation to the command line interfaces. |
- | |
232 | This should make it easier to decide when to use the -m switch. |
- | |
233 | - | ||
234 | - | ||
235 | version 1.67.5 (Jul 7, 2006) |
- | |
236 | - | ||
237 | [-] Fixed encoding of MOV (E)AX,[WORD ADDR] instruction in 32-bit mode. |
- | |
238 | - | ||
239 | - | ||
240 | version 1.67.4 (Jul 5, 2006) |
- | |
241 | - | ||
242 | [+] Added R8L-R15L (Intel-style) aliases for R8B-R15B registers. |
- | |
243 | - | ||
244 | [-] Further optimizations in the parser. |
- | |
Line 245... | Line 28... | ||
245 | 28 | at some position. |
|
- | 29 | ||
Line -... | Line 30... | ||
- | 30 | [-] Added support for outputting the 32-bit address relocations in case of |
|
- | 31 | 64-bit object formats and PE executable. This makes some specific |
|
Line -... | Line 32... | ||
- | 32 | instructions compilable, but it also forces linker to put such |
|
246 | 33 | generated code into the low 2 gigabytes of addressing space. |
|
Line 247... | Line 34... | ||
247 | version 1.67.3 (Jul 2, 2006) |
34 | |
248 | - | ||
249 | [-] Improved an instruction searching algorithm a bit. |
- | |
250 | - | ||
251 | 35 | [+] Added "EFI", "EFIboot" and "EFIruntime" subsystem keywords for PE format. |
|
Line 252... | Line 36... | ||
252 | version 1.67.2 (Jul 1, 2006) |
36 | |
253 | - | ||
254 | [-] Fixed a recently introduced bug with ELF relocations in case of 32-bit |
- | |
255 | object. |
- | |
Line 256... | Line 37... | ||
256 | 37 | [-] Corrected the precedence of operators of macroinstruction line maker. |
|
Line 257... | Line 38... | ||
257 | 38 | The symbol escaping now has always the higher priority than symbol conversion, |
|
258 | version 1.67.1 (Jun 30, 2006) |
39 | and both have higher precedence than concatenation. |
259 | 40 | ||
260 | [+] Added the support for the new AMD SVM technology instructions. |
41 | [+] Allowed to check "@b" and "@f" symbols with "defined" operator. |
Line 261... | Line 42... | ||
261 | 42 | ||
262 | 43 | [+] Allowed "as" operator to specify the output file extension when |
|
Line 300... | Line 81... | ||
300 | if eax eq EAX | 0/0 |
81 | if eax eq EAX | 0/0 |
301 | nop |
82 | nop |
302 | end if |
83 | end if |
Line 303... | Line 84... | ||
303 | 84 | ||
304 | is parsed into just NOP instruction, since parser is able to determine |
85 | is parsed into just "nop" instruction, since parser is able to determine |
305 | that the condition is true, even though one of the logical values makes no |
86 | that the condition is true, even though one of the logical values makes no |
306 | sense - but since this is none of the "eq", "eqtype" and "in" expressions, |
87 | sense - but since this is none of the "eq", "eqtype" and "in" expressions, |
Line 307... | Line 88... | ||
307 | the parser doesn't investigate. |
88 | the parser doesn't investigate. |
Line 323... | Line 104... | ||
323 | 104 | ||
Line 324... | Line 105... | ||
324 | [-] The size operator applied to jump no longer applies to the size of relative |
105 | [-] The size operator applied to jump no longer applies to the size of relative |
325 | displacement - now it applies to the size of target address. |
106 | displacement - now it applies to the size of target address. |
Line 326... | Line 107... | ||
326 | 107 | ||
327 | [-] The RET instruction with 0 parameter is now assembled into short form, |
108 | [-] The "ret" instruction with 0 parameter is now assembled into short form, |
Line 328... | Line 109... | ||
328 | unless you force using the 16-bit immediate with "word" operator. |
109 | unless you force using the 16-bit immediate with "word" operator. |
Line 329... | Line 110... | ||
329 | 110 | ||
Line 348... | Line 129... | ||
348 | 129 | ||
Line 349... | Line 130... | ||
349 | [-] Some of the internal structures have been extended to provide the |
130 | [-] Some of the internal structures have been extended to provide the |
350 | possibility of making extensive symbol dumps. |
131 | possibility of making extensive symbol dumps. |
Line 351... | Line 132... | ||
351 | 132 | ||
352 | [-] Corrected FIX directive to keep the value intact before assigning it to the |
133 | [-] Corrected "fix" directive to keep the value intact before assigning it to the |
Line 353... | Line 134... | ||
353 | prioritized constant. |
134 | prioritized constant. |
354 | 135 | ||
355 | [+] The ` operator now works with any kind of symbol; when used with quoted |
136 | [+] The ` operator now works with any kind of symbol; when used with quoted |