New upstream version 1.71.59
Tomasz Buchert
7 years ago
0 | 0 |
|
1 | 1 |
flat assembler version 1.71
|
2 | |
Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
All rights reserved.
|
4 | 4 |
|
5 | 5 |
This program is free for commercial and non-commercial use as long as
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for DOS
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
init_dpmi_memory:
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for DOS
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
format MZ
|
|
335 | 335 |
include '..\version.inc'
|
336 | 336 |
|
337 | 337 |
_logo db 'flat assembler version ',VERSION_STRING,24h
|
338 | |
_copyright db 'Copyright (c) 1999-2016, Tomasz Grysztar',0Dh,0Ah,0
|
|
338 |
_copyright db 'Copyright (c) 1999-2017, Tomasz Grysztar',0Dh,0Ah,0
|
339 | 339 |
|
340 | 340 |
_usage db 0Dh,0Ah
|
341 | 341 |
db 'usage: fasm <source> [output]',0Dh,0Ah
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for DOS
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
segment modes use16
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for DOS
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
go32:
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Linux
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
format ELF executable 3
|
|
279 | 279 |
|
280 | 280 |
include '..\version.inc'
|
281 | 281 |
|
282 | |
_copyright db 'Copyright (c) 1999-2016, Tomasz Grysztar',0xA,0
|
|
282 |
_copyright db 'Copyright (c) 1999-2017, Tomasz Grysztar',0xA,0
|
283 | 283 |
|
284 | 284 |
_logo db 'flat assembler version ',VERSION_STRING,0
|
285 | 285 |
_usage db 0xA
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Linux
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
O_ACCMODE = 0003o
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Linux x64
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
format ELF64 executable 3 at 400000h
|
|
295 | 295 |
|
296 | 296 |
include '..\..\version.inc'
|
297 | 297 |
|
298 | |
_copyright db 'Copyright (c) 1999-2016, Tomasz Grysztar',0xA,0
|
|
298 |
_copyright db 'Copyright (c) 1999-2017, Tomasz Grysztar',0xA,0
|
299 | 299 |
|
300 | 300 |
_logo db 'flat assembler version ',VERSION_STRING,0
|
301 | 301 |
_usage db 0xA
|
|
0 |
|
|
1 |
; flat assembler interface for Linux x64
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
|
3 |
; All rights reserved.
|
0 | 4 |
|
1 | 5 |
esp equ +rsp
|
2 | 6 |
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Linux x64
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
O_ACCMODE = 0003o
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Win32
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
format PE console
|
|
327 | 327 |
|
328 | 328 |
include '..\version.inc'
|
329 | 329 |
|
330 | |
_copyright db 'Copyright (c) 1999-2016, Tomasz Grysztar',0Dh,0Ah,0
|
|
330 |
_copyright db 'Copyright (c) 1999-2017, Tomasz Grysztar',0Dh,0Ah,0
|
331 | 331 |
|
332 | 332 |
_logo db 'flat assembler version ',VERSION_STRING,0
|
333 | 333 |
_usage db 0Dh,0Ah
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Win32
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
CREATE_NEW = 1
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
assembler:
|
|
1302 | 1302 |
push ebx
|
1303 | 1303 |
jmp stop_while
|
1304 | 1304 |
|
1305 | |
data_unicode:
|
1306 | |
or [base_code],-1
|
1307 | |
jmp define_words
|
1308 | |
data_words:
|
1309 | |
mov [base_code],0
|
1310 | |
define_words:
|
1311 | |
push define_data_word
|
1312 | |
jmp define_data
|
1313 | |
data_dwords:
|
1314 | |
push define_data_dword
|
1315 | |
jmp define_data
|
1316 | |
data_pwords:
|
1317 | |
push define_data_pword
|
1318 | |
jmp define_data
|
1319 | |
data_qwords:
|
1320 | |
push define_data_qword
|
1321 | |
jmp define_data
|
1322 | |
data_twords:
|
1323 | |
push define_data_tword
|
1324 | |
jmp define_data
|
1325 | |
data_bytes:
|
1326 | |
push define_data_byte
|
1327 | 1305 |
define_data:
|
1328 | 1306 |
cmp edi,[tagged_blocks]
|
1329 | 1307 |
jae out_of_memory
|
|
1348 | 1326 |
duplicated_values:
|
1349 | 1327 |
cmp edi,[tagged_blocks]
|
1350 | 1328 |
jae out_of_memory
|
|
1329 |
clc
|
1351 | 1330 |
call near dword [esp+8]
|
1352 | 1331 |
lods byte [esi]
|
1353 | 1332 |
cmp al,','
|
|
1363 | 1342 |
cmp edi,[tagged_blocks]
|
1364 | 1343 |
jae out_of_memory
|
1365 | 1344 |
push eax esi
|
|
1345 |
clc
|
1366 | 1346 |
call near dword [esp+8]
|
1367 | 1347 |
pop ebx eax
|
1368 | 1348 |
dec eax
|
|
1386 | 1366 |
simple_data_value:
|
1387 | 1367 |
cmp edi,[tagged_blocks]
|
1388 | 1368 |
jae out_of_memory
|
|
1369 |
clc
|
1389 | 1370 |
call near dword [esp]
|
1390 | 1371 |
data_defined:
|
1391 | 1372 |
lods byte [esi]
|
1392 | 1373 |
cmp al,','
|
1393 | 1374 |
je define_data
|
1394 | 1375 |
dec esi
|
1395 | |
add esp,4
|
1396 | |
jmp instruction_assembled
|
1397 | |
|
1398 | |
|
1399 | |
|
1400 | |
|
|
1376 |
stc
|
|
1377 |
ret
|
|
1378 |
data_bytes:
|
|
1379 |
call define_data
|
1401 | 1380 |
define_data_byte:
|
|
1381 |
jc instruction_assembled
|
1402 | 1382 |
lods byte [esi]
|
1403 | 1383 |
cmp al,'('
|
1404 | 1384 |
je get_byte
|
|
1436 | 1416 |
undefined_data_ok:
|
1437 | 1417 |
mov [undefined_data_end],edi
|
1438 | 1418 |
ret
|
|
1419 |
data_unicode:
|
|
1420 |
or [base_code],-1
|
|
1421 |
jmp define_words
|
|
1422 |
data_words:
|
|
1423 |
mov [base_code],0
|
|
1424 |
define_words:
|
|
1425 |
call define_data
|
1439 | 1426 |
define_data_word:
|
|
1427 |
jc instruction_assembled
|
1440 | 1428 |
lods byte [esi]
|
1441 | 1429 |
cmp al,'('
|
1442 | 1430 |
je get_word
|
|
1473 | 1461 |
word_string_ok:
|
1474 | 1462 |
inc esi
|
1475 | 1463 |
ret
|
|
1464 |
data_dwords:
|
|
1465 |
call define_data
|
1476 | 1466 |
define_data_dword:
|
|
1467 |
jc instruction_assembled
|
1477 | 1468 |
lods byte [esi]
|
1478 | 1469 |
cmp al,'('
|
1479 | 1470 |
je get_dword
|
|
1515 | 1506 |
call mark_relocation
|
1516 | 1507 |
stos word [edi]
|
1517 | 1508 |
ret
|
|
1509 |
data_pwords:
|
|
1510 |
call define_data
|
1518 | 1511 |
define_data_pword:
|
|
1512 |
jc instruction_assembled
|
1519 | 1513 |
lods byte [esi]
|
1520 | 1514 |
cmp al,'('
|
1521 | 1515 |
je get_pword
|
|
1561 | 1555 |
call mark_relocation
|
1562 | 1556 |
stos word [edi]
|
1563 | 1557 |
ret
|
|
1558 |
data_qwords:
|
|
1559 |
call define_data
|
1564 | 1560 |
define_data_qword:
|
|
1561 |
jc instruction_assembled
|
1565 | 1562 |
lods byte [esi]
|
1566 | 1563 |
cmp al,'('
|
1567 | 1564 |
je get_qword
|
|
1580 | 1577 |
mov eax,edx
|
1581 | 1578 |
stos dword [edi]
|
1582 | 1579 |
ret
|
|
1580 |
data_twords:
|
|
1581 |
call define_data
|
1583 | 1582 |
define_data_tword:
|
|
1583 |
jc instruction_assembled
|
1584 | 1584 |
lods byte [esi]
|
1585 | 1585 |
cmp al,'('
|
1586 | 1586 |
je get_tword
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
avx_single_source_pd_instruction_er_evex:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
out_of_memory:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
calculate_expression:
|
|
1063 | 1063 |
mov cx,bx
|
1064 | 1064 |
neg cx
|
1065 | 1065 |
inc cx
|
1066 | |
cmp cx,52
|
|
1066 |
cmp cx,52+1
|
1067 | 1067 |
ja value_out_of_range
|
1068 | 1068 |
cmp cx,32
|
1069 | 1069 |
jb fp_qword_small_shift
|
|
1088 | 1088 |
fp_qword_exp_ok:
|
1089 | 1089 |
shl ebx,20
|
1090 | 1090 |
or edx,ebx
|
|
1091 |
jnz fp_qword_store
|
|
1092 |
or eax,eax
|
|
1093 |
jz value_out_of_range
|
1091 | 1094 |
fp_qword_store:
|
1092 | 1095 |
mov bl,[esi+11]
|
1093 | 1096 |
shl ebx,31
|
|
1121 | 1124 |
mov cx,bx
|
1122 | 1125 |
neg cx
|
1123 | 1126 |
inc cx
|
1124 | |
cmp cx,10
|
|
1127 |
cmp cx,10+1
|
1125 | 1128 |
ja value_out_of_range
|
1126 | 1129 |
xor bx,bx
|
1127 | 1130 |
shr ax,cl
|
|
1134 | 1137 |
fp_word_exp_ok:
|
1135 | 1138 |
shl bx,10
|
1136 | 1139 |
or ax,bx
|
|
1140 |
jz value_out_of_range
|
1137 | 1141 |
fp_word_store:
|
1138 | 1142 |
mov bl,[esi+11]
|
1139 | 1143 |
shl bx,15
|
|
1168 | 1172 |
mov cx,bx
|
1169 | 1173 |
neg cx
|
1170 | 1174 |
inc cx
|
1171 | |
cmp cx,23
|
|
1175 |
cmp cx,23+1
|
1172 | 1176 |
ja value_out_of_range
|
1173 | 1177 |
xor bx,bx
|
1174 | 1178 |
shr eax,cl
|
|
1181 | 1185 |
fp_dword_exp_ok:
|
1182 | 1186 |
shl ebx,23
|
1183 | 1187 |
or eax,ebx
|
|
1188 |
jz value_out_of_range
|
1184 | 1189 |
fp_dword_store:
|
1185 | 1190 |
mov bl,[esi+11]
|
1186 | 1191 |
shl ebx,31
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
convert_expression:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
formatter:
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Unix/libc
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
format ELF
|
|
301 | 301 |
|
302 | 302 |
include '..\version.inc'
|
303 | 303 |
|
304 | |
_copyright db 'Copyright (c) 1999-2016, Tomasz Grysztar',0xA,0
|
|
304 |
_copyright db 'Copyright (c) 1999-2017, Tomasz Grysztar',0xA,0
|
305 | 305 |
|
306 | 306 |
_logo db 'flat assembler version ',VERSION_STRING,0
|
307 | 307 |
_usage db 0xA
|
0 | 0 |
|
1 | 1 |
; flat assembler interface for Unix/libc
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
extrn malloc
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
_out_of_memory db 'out of memory',0
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
parser:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
preprocessor:
|
|
557 | 557 |
jne next_directive
|
558 | 558 |
repe cmps byte [esi],[edi]
|
559 | 559 |
jb no_directive
|
560 | |
je directive_handler
|
|
560 |
je directive_found
|
561 | 561 |
next_directive:
|
562 | 562 |
mov edi,ebx
|
563 | 563 |
add edi,2
|
|
567 | 567 |
mov ecx,ebp
|
568 | 568 |
stc
|
569 | 569 |
ret
|
|
570 |
directive_found:
|
|
571 |
call get_directive_handler_base
|
570 | 572 |
directive_handler:
|
571 | 573 |
lea esi,[edx+ebp]
|
572 | |
movzx eax,word [ebx]
|
573 | |
add eax,directive_handler
|
|
574 |
movzx ecx,word [ebx]
|
|
575 |
add eax,ecx
|
574 | 576 |
clc
|
|
577 |
ret
|
|
578 |
get_directive_handler_base:
|
|
579 |
mov eax,[esp]
|
575 | 580 |
ret
|
576 | 581 |
|
577 | 582 |
preprocess_line:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
dump_symbols:
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
include_variable db 'INCLUDE',0
|
0 | 0 |
|
1 | 1 |
; flat assembler core variables
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
; Variables which have to be set up by interface:
|
0 | 0 |
|
1 | 1 |
; flat assembler version 1.71
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
;
|
5 | 5 |
; This programs is free for commercial and non-commercial use as long as
|
|
32 | 32 |
; cannot simply be copied and put under another distribution licence
|
33 | 33 |
; (including the GNU Public Licence).
|
34 | 34 |
|
35 | |
VERSION_STRING equ "1.71.58"
|
|
35 |
VERSION_STRING equ "1.71.59"
|
36 | 36 |
|
37 | 37 |
VERSION_MAJOR = 1
|
38 | 38 |
VERSION_MINOR = 71
|
0 | 0 |
|
1 | 1 |
; flat assembler core
|
2 | |
; Copyright (c) 1999-2016, Tomasz Grysztar.
|
|
2 |
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
3 | 3 |
; All rights reserved.
|
4 | 4 |
|
5 | 5 |
simple_instruction_except64:
|
0 | 0 |
|
1 | 1 |
Visit http://flatassembler.net/ for more information.
|
|
2 |
|
|
3 |
|
|
4 |
version 1.71.59 (Jan 20,2017)
|
|
5 |
|
|
6 |
[-] Corrected range-checking for minimal denormal floating-point values.
|
|
7 |
|
|
8 |
[-] Other minor fixes.
|
2 | 9 |
|
3 | 10 |
|
4 | 11 |
version 1.71.58 (Dec 08, 2016)
|