Subversion Repositories Kolibri OS

Rev

Rev 3011 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2665 dunkaist 1
 
2
3
 
4
 
4478 dunkaist 5
6
 
7
8
 
9
 
10
11
 
12
13
 
14
 
15
16
 
17
18
 
19
 
20
21
 
22
    to overflow from time to time.
23
24
 
25
 
26
27
 
28
    values when used in some logical expressions.
29
30
 
31
    was incorrectly leaving the data marked as uninitialized. The new fix
32
    addresses this issue.
33
34
 
35
 
36
37
 
38
    now correctly mark this data as initialized when it is in a different
39
    addressing space.
40
41
 
42
43
 
44
    provided to assembler directives like "label", "virtual" or "load".
45
46
 
47
 
48
49
 
50
51
 
52
 
53
54
 
55
    the same line.
56
57
 
58
    specific ill-structured preprocessed lines.
59
60
 
61
62
 
63
 
64
65
 
66
    element when default value for iterating variable was specified.
67
68
 
69
 
70
71
 
72
    in some very specific cases.
73
74
 
75
 
76
77
 
78
    types of relocatable values in some places (like "label" directive).
79
80
 
81
 
82
83
 
84
    fail when assembler had preallocated very large amount of memory.
85
86
 
87
 
88
89
 
90
    incorrectly with negative addresses.
91
92
 
93
 
94
95
 
96
    was manifesting with bases larger than 31-bit.
97
98
 
99
 
100
101
 
102
    relocatable addresses in a reverse order (first substracting/negating
103
    and then adding the other one).
104
105
 
106
 
107
108
 
109
110
 
111
    virtual block with "org" directive.
112
113
 
114
 
115
116
 
117
    addressing space. This label can the be used with "load" or "store"
118
    directives to allow operations on bytes in any addressing space,
119
    not just the current one. This special label is defined by following
120
    its name with double colon, and can only be used with "load" and
121
    "store" directive, where address can now be specified in two parts,
122
    first the adressing space label, then the colon and then the
123
    address inside that addressing space.
124
125
 
126
 
3010 dunkaist 127
128
 
129
    object format between the 32-bit or 64-bit size.
130
131
 
132
 
133
134
 
135
    of some string instructions ("cmps", "lods", "movs" and "outs") is
136
    used in long mode. Now it is consistent with optimizations done with
137
    all the other instructions.
138
139
 
140
 
2665 dunkaist 141
142
 
3010 dunkaist 143
    address expressions to cause an error prematurely during the
2665 dunkaist 144
    parsing stage.
145
146
 
147
 
148
149
 
150
    FMA4, XOP, MOVBE, BMI, TBM, INVPCID, HLE and RTM instruction sets.
151
152
 
153
154
 
155
    to be calculated by preprocessor in its arguments.
156
157
 
3010 dunkaist 158
2665 dunkaist 159
 
160
161
 
162
    "format ELF executable" setting.
163
164
 
165
    special segments in ELF executables.
166
167
 
168
    generated with "qword" keyword inside square brackets.
169
170
 
171
172
 
173
    In such case it contains only the preprocessed source that can be extracted
174
    with PREPSRC tool. If error occured during preprocessing, only the source up
175
    to the point of error is provided.
176
177
 
178
179
 
180
    state from the final assembly pass.
181
182
 
183
184
 
185
    context of formatter directives, and thus are no longer disallowed as
186
    labels.
187
188
 
189
    symbol followed by value after the argument name in definition.
190
191
 
192
    to test whether two values differ only by a constant and not relocatable
193
    amount.
194
195
 
196
    calculations in signed and unsigned ranges in full 64-bit. This fixes
197
    a number of issues - the overflow will now be correctly detected for
198
    64-bit values in cases, where previous versions could not distinguish
199
    whether it was an overflow or not. The effect of these corrections is
200
    that "dq" directive will now behave consistently with behavior of the
201
    data directives for smaller sizes, and the same applies to all the
202
    places where "qword" size for value is used.
203
204
 
205
 
206
207
 
208
209
 
210
211
 
212
    64-bit variants of respective instructions.
213
214
 
215
    mnemonics to allow choosing between 16-bit and 32-bit variants of
216
    structures used by the "fstenv", "fsave" and "frstor" instructions.
217
218
 
219
220
 
221
    added "static" keyword for the "public" directive.
222
223
 
224
225
 
226
    should be used, depending on whether the fixups directory is placed
227
    somewhere into executable by programer, or not. This makes possible the
228
    more flexible use of the addressing symbols in case of PE executable fixed
229
    at some position.
230
231
 
232
    64-bit object formats and PE executable. This makes some specific
233
    instructions compilable, but it also forces linker to put such
234
    generated code into the low 2 gigabytes of addressing space.
235
236
 
237
238
 
239
    The symbol escaping now has always the higher priority than symbol conversion,
240
    and both have higher precedence than concatenation.
241
242
 
243
244
 
245
    placed at the end of the "format" directive line.
246
247
 
248
    is no longer allowed.
249
250
 
251
    to help improve long numbers readability.
252
253
 
254
    various kinds of information from it.
255
256
 
257
258
 
259
 
260
261
 
262
    the same kind as "equ" directive, however there's an important difference
263
    that "define" doesn't process symbolic constants in the value before
264
    assigning it. For example:
265
266
 
267
        a equ a+a
268
269
 
270
        define b b+b
271
272
 
273
    value "b+b". This directive may be useful in some advanced
274
    macroinstructions.
275
276
 
277
    for slightly better performance and lesser memory usage by assembler.
278
    The logical values defined with "eq", "eqtype" and "in" operators are now
279
    evaluated by the parser and if they are enough to determine the condition,
280
    the whole block is processed accordingly. Thus this block:
281
282
 
283
                nop
284
        end if
285
286
 
287
    that the condition is true, even though one of the logical values makes no
288
    sense - but since this is none of the "eq", "eqtype" and "in" expressions,
289
    the parser doesn't investigate.
290
291
 
292
    needs to determine the condition. So this block:
293
294
 
295
296
 
297
298
 
299
    versions. This is because after checking that "defined alpha" is false
300
    condition it doesn't need to know the second logical value to determine the
301
    value of conjunction.
302
303
 
304
    obsolete and no longer correct - use "jmp short" instead.
305
306
 
307
    displacement - now it applies to the size of target address.
308
309
 
310
    unless you force using the 16-bit immediate with "word" operator.
311
312
 
313
314
 
315
316
 
317
    when making position-independent code for shared libraries. For any label
318
    you can get its offset relative to GOT by preceding it with "rva" operator
319
    (the same keyword as for PE format is used, to avoid adding a new one,
320
    while this one has very similar meaning).
321
322
 
323
    to make the distinction between the run-time segments and linkable
324
    sections. If you had a "section" directive in your ELF executables and they
325
    no longer assemble, replace it with "segment".
326
327
 
328
    even when there are no fixups to be put there (in such case it creates the
329
    directory with one empty block).
330
331
 
332
    possibility of making extensive symbol dumps.
333
334
 
335
    prioritized constant.
336
337
 
338
    string it simply does nothing. Thus the sequence of ` operators applied to
339
    one symbol work the same as if there was just one. In similar manner, the
340
    sequence of # operators now works as if it was a single one - using such a
341
    sequence instead of escaping, which was kept for some backward
342
    compatibility, is now deprecated.
343
344
 
345
    incorrectly interpreted as data definition).
346
347
 
348
349
 
350
 
351
352
 
353
    setting).
354
355
 
356
357
 
358
359
 
360
361
 
362
    must always fit in the range of signed 64 integer now.
363
364
 
365
    as a second addressing register - fixed.
366
367
 
368
369
 
370
    wrongly signaled - fixed.
371
372
 
373
374
 
375
 
376
377
 
378
379
 
380
    (with "format MS64 COFF" setting).
381
382
 
383
384
 
385
386
 
387
388
 
389
    label.
390
391
 
392
    than one resource of the same string name, the separate resource
393
    directories were created with the same names - fixed.
394
395
 
396
397
 
398
399
 
400
    macros to be processed the wrong way.
401