LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Я вам открою страшную тайну, но ассемблер МЦСТ писали сами, и дизассемблер, надо понимать, тоже.

Вы можете взять binutils-ы и сами проверить.

.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --version
GNU objdump (GNU Binutils) 2.25
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --help
Usage: ./e2k-linux-objdump <option(s)> <file(s)>
 Display information from object <file(s)>.
 At least one of the following switches must be given:
  -a, --archive-headers    Display archive header information
  -f, --file-headers       Display the contents of the overall file header
  -p, --private-headers    Display object format specific file header contents
  -P, --private=OPT,OPT... Display object format specific contents
  -h, --[section-]headers  Display the contents of the section headers
  -x, --all-headers        Display the contents of all headers
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
  -S, --source             Intermix source code with disassembly
  -s, --full-contents      Display the full contents of all sections requested
  -g, --debugging          Display debug information in object file
  -e, --debugging-tags     Display debug information using ctags style
  -G, --stabs              Display (in raw form) any STABS info in the file
  -W[lLiaprmfFsoRt] or
  --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
          =frames-interp,=str,=loc,=Ranges,=pubtypes,
          =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
          =addr,=cu_index]
                           Display DWARF info in the file
  -t, --syms               Display the contents of the symbol table(s)
  -T, --dynamic-syms       Display the contents of the dynamic symbol table
  -r, --reloc              Display the relocation entries in the file
  -R, --dynamic-reloc      Display the dynamic relocation entries in the file
  @<file>                  Read options from <file>
  -v, --version            Display this program's version number
  -i, --info               List object formats and architectures supported
  -H, --help               Display this information

 The following switches are optional:
  -b, --target=BFDNAME           Specify the target object format as BFDNAME
  -m, --architecture=MACHINE     Specify the target architecture as MACHINE
  -j, --section=NAME             Only display information for section NAME
  -M, --disassembler-options=OPT Pass text OPT on to the disassembler
  -EB --endian=big               Assume big endian format when disassembling
  -EL --endian=little            Assume little endian format when disassembling
      --file-start-context       Include context from start of file (with -S)
  -I, --include=DIR              Add DIR to search list for source files
  -l, --line-numbers             Include line numbers and filenames in output
  -F, --file-offsets             Include file offsets when displaying information
  -C, --demangle[=STYLE]         Decode mangled/processed symbol names
                                  The STYLE, if specified, can be `auto', `gnu',
                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'
                                  or `gnat'
  -w, --wide                     Format output for more than 80 columns
  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling
      --start-address=ADDR       Only process data whose address is >= ADDR
      --stop-address=ADDR        Only process data whose address is <= ADDR
      --prefix-addresses         Print complete address alongside disassembly
      --[no-]show-raw-insn       Display hex alongside symbolic disassembly
      --insn-width=WIDTH         Display WIDTH bytes on a single line for -d
      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses
      --special-syms             Include special symbols in symbol dumps
      --prefix=PREFIX            Add PREFIX to absolute paths for -S
      --prefix-strip=LEVEL       Strip initial directory names for -S
      --dwarf-depth=N        Do not display DIEs at depth N or greater
      --dwarf-start=N        Display DIEs starting with N, at the same depth
                             or deeper
      --dwarf-check          Make additional dwarf internal consistency checks.      

./e2k-linux-objdump: supported targets: elf32-e2k elf32-e2k-pm elf64-e2k elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex eir
./e2k-linux-objdump: supported architectures: generic:64 generic:32 generic:pm elbrus-v1:64 elbrus-v1:32 elbrus-v1:pm elbrus-v2:64 elbrus-v2:32 elbrus-v2:pm elbrus-v3:64 elbrus-v3:32 elbrus-v3:pm elbrus-v4:64 elbrus-v4:32 elbrus-v4:pm elbrus-v5:64 elbrus-v5:32 elbrus-v5:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 el
Обратите внимание на флаги:
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
Дизассемблировать он умеет. И основан он на исходниках GNU. И этот objdump это вообще часть пакета binutils. Можно через strings поискать что-нибудь из инструкций деления:
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ strings e2k-linux-objdump | grep "div"
DW_OP_div
udivx
sdivx
sdivs
sdivd
udivs
udivd
fxdivss
fxdivsx
fxdivdd
fxdivdx
fxdivxx
fxdivxd
fxdivxs
fxdivtss
fxdivtdd
fxdivtsx
fxdivtdx
pfdivs
pfdivd
trunc_div
Odivide
__divdi3
__udivmoddi4
__udivdi3
__divdi3
__udivdi3
И да, такие инструкции действительно есть. http://www.mcst.ru/files/5ed39a/dd0cd8/50506b/000000/elbrus_prog_2020-05-30.pdf - смотрите страницу 144 - там есть udivx sdivx sdivs sdivd ...

Т.е. они взяли binutils-ы от GNU и их пропатчили. Ч.Т.Д.

Исходников нет.

Исправление SZT, :

Я вам открою страшную тайну, но ассемблер МЦСТ писали сами, и дизассемблер, надо понимать, тоже.

Вы можете взять binutils-ы и сами проверить.

.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --version
GNU objdump (GNU Binutils) 2.25
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --help
Usage: ./e2k-linux-objdump <option(s)> <file(s)>
 Display information from object <file(s)>.
 At least one of the following switches must be given:
  -a, --archive-headers    Display archive header information
  -f, --file-headers       Display the contents of the overall file header
  -p, --private-headers    Display object format specific file header contents
  -P, --private=OPT,OPT... Display object format specific contents
  -h, --[section-]headers  Display the contents of the section headers
  -x, --all-headers        Display the contents of all headers
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
  -S, --source             Intermix source code with disassembly
  -s, --full-contents      Display the full contents of all sections requested
  -g, --debugging          Display debug information in object file
  -e, --debugging-tags     Display debug information using ctags style
  -G, --stabs              Display (in raw form) any STABS info in the file
  -W[lLiaprmfFsoRt] or
  --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
          =frames-interp,=str,=loc,=Ranges,=pubtypes,
          =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
          =addr,=cu_index]
                           Display DWARF info in the file
  -t, --syms               Display the contents of the symbol table(s)
  -T, --dynamic-syms       Display the contents of the dynamic symbol table
  -r, --reloc              Display the relocation entries in the file
  -R, --dynamic-reloc      Display the dynamic relocation entries in the file
  @<file>                  Read options from <file>
  -v, --version            Display this program's version number
  -i, --info               List object formats and architectures supported
  -H, --help               Display this information

 The following switches are optional:
  -b, --target=BFDNAME           Specify the target object format as BFDNAME
  -m, --architecture=MACHINE     Specify the target architecture as MACHINE
  -j, --section=NAME             Only display information for section NAME
  -M, --disassembler-options=OPT Pass text OPT on to the disassembler
  -EB --endian=big               Assume big endian format when disassembling
  -EL --endian=little            Assume little endian format when disassembling
      --file-start-context       Include context from start of file (with -S)
  -I, --include=DIR              Add DIR to search list for source files
  -l, --line-numbers             Include line numbers and filenames in output
  -F, --file-offsets             Include file offsets when displaying information
  -C, --demangle[=STYLE]         Decode mangled/processed symbol names
                                  The STYLE, if specified, can be `auto', `gnu',
                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'
                                  or `gnat'
  -w, --wide                     Format output for more than 80 columns
  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling
      --start-address=ADDR       Only process data whose address is >= ADDR
      --stop-address=ADDR        Only process data whose address is <= ADDR
      --prefix-addresses         Print complete address alongside disassembly
      --[no-]show-raw-insn       Display hex alongside symbolic disassembly
      --insn-width=WIDTH         Display WIDTH bytes on a single line for -d
      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses
      --special-syms             Include special symbols in symbol dumps
      --prefix=PREFIX            Add PREFIX to absolute paths for -S
      --prefix-strip=LEVEL       Strip initial directory names for -S
      --dwarf-depth=N        Do not display DIEs at depth N or greater
      --dwarf-start=N        Display DIEs starting with N, at the same depth
                             or deeper
      --dwarf-check          Make additional dwarf internal consistency checks.      

./e2k-linux-objdump: supported targets: elf32-e2k elf32-e2k-pm elf64-e2k elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex eir
./e2k-linux-objdump: supported architectures: generic:64 generic:32 generic:pm elbrus-v1:64 elbrus-v1:32 elbrus-v1:pm elbrus-v2:64 elbrus-v2:32 elbrus-v2:pm elbrus-v3:64 elbrus-v3:32 elbrus-v3:pm elbrus-v4:64 elbrus-v4:32 elbrus-v4:pm elbrus-v5:64 elbrus-v5:32 elbrus-v5:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 el
Обратите внимание на флаги:
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
Дизассемблировать он умеет. И основан он на исходниках FSF. И этот objdump это вообще часть пакета binutils. Можно через strings поискать что-нибудь из инструкций деления:
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ strings e2k-linux-objdump | grep "div"
DW_OP_div
udivx
sdivx
sdivs
sdivd
udivs
udivd
fxdivss
fxdivsx
fxdivdd
fxdivdx
fxdivxx
fxdivxd
fxdivxs
fxdivtss
fxdivtdd
fxdivtsx
fxdivtdx
pfdivs
pfdivd
trunc_div
Odivide
__divdi3
__udivmoddi4
__udivdi3
__divdi3
__udivdi3
И да, такие инструкции действительно есть. http://www.mcst.ru/files/5ed39a/dd0cd8/50506b/000000/elbrus_prog_2020-05-30.pdf - смотрите страницу 144 - там есть udivx sdivx sdivs sdivd ...

Т.е. они взяли binutils-ы от GNU и их пропатчили. Ч.Т.Д.

Исходников нет.

Исходная версия SZT, :

Я вам открою страшную тайну, но ассемблер МЦСТ писали сами, и дизассемблер, надо понимать, тоже.

Вы можете взять binutils-ы и сами проверить.

.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --version
GNU objdump (GNU Binutils) 2.25
Copyright (C) 2014 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ ./e2k-linux-objdump --help
Usage: ./e2k-linux-objdump <option(s)> <file(s)>
 Display information from object <file(s)>.
 At least one of the following switches must be given:
  -a, --archive-headers    Display archive header information
  -f, --file-headers       Display the contents of the overall file header
  -p, --private-headers    Display object format specific file header contents
  -P, --private=OPT,OPT... Display object format specific contents
  -h, --[section-]headers  Display the contents of the section headers
  -x, --all-headers        Display the contents of all headers
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
  -S, --source             Intermix source code with disassembly
  -s, --full-contents      Display the full contents of all sections requested
  -g, --debugging          Display debug information in object file
  -e, --debugging-tags     Display debug information using ctags style
  -G, --stabs              Display (in raw form) any STABS info in the file
  -W[lLiaprmfFsoRt] or
  --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,
          =frames-interp,=str,=loc,=Ranges,=pubtypes,
          =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,
          =addr,=cu_index]
                           Display DWARF info in the file
  -t, --syms               Display the contents of the symbol table(s)
  -T, --dynamic-syms       Display the contents of the dynamic symbol table
  -r, --reloc              Display the relocation entries in the file
  -R, --dynamic-reloc      Display the dynamic relocation entries in the file
  @<file>                  Read options from <file>
  -v, --version            Display this program's version number
  -i, --info               List object formats and architectures supported
  -H, --help               Display this information

 The following switches are optional:
  -b, --target=BFDNAME           Specify the target object format as BFDNAME
  -m, --architecture=MACHINE     Specify the target architecture as MACHINE
  -j, --section=NAME             Only display information for section NAME
  -M, --disassembler-options=OPT Pass text OPT on to the disassembler
  -EB --endian=big               Assume big endian format when disassembling
  -EL --endian=little            Assume little endian format when disassembling
      --file-start-context       Include context from start of file (with -S)
  -I, --include=DIR              Add DIR to search list for source files
  -l, --line-numbers             Include line numbers and filenames in output
  -F, --file-offsets             Include file offsets when displaying information
  -C, --demangle[=STYLE]         Decode mangled/processed symbol names
                                  The STYLE, if specified, can be `auto', `gnu',
                                  `lucid', `arm', `hp', `edg', `gnu-v3', `java'
                                  or `gnat'
  -w, --wide                     Format output for more than 80 columns
  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling
      --start-address=ADDR       Only process data whose address is >= ADDR
      --stop-address=ADDR        Only process data whose address is <= ADDR
      --prefix-addresses         Print complete address alongside disassembly
      --[no-]show-raw-insn       Display hex alongside symbolic disassembly
      --insn-width=WIDTH         Display WIDTH bytes on a single line for -d
      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses
      --special-syms             Include special symbols in symbol dumps
      --prefix=PREFIX            Add PREFIX to absolute paths for -S
      --prefix-strip=LEVEL       Strip initial directory names for -S
      --dwarf-depth=N        Do not display DIEs at depth N or greater
      --dwarf-start=N        Display DIEs starting with N, at the same depth
                             or deeper
      --dwarf-check          Make additional dwarf internal consistency checks.      

./e2k-linux-objdump: supported targets: elf32-e2k elf32-e2k-pm elf64-e2k elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex eir
./e2k-linux-objdump: supported architectures: generic:64 generic:32 generic:pm elbrus-v1:64 elbrus-v1:32 elbrus-v1:pm elbrus-v2:64 elbrus-v2:32 elbrus-v2:pm elbrus-v3:64 elbrus-v3:32 elbrus-v3:pm elbrus-v4:64 elbrus-v4:32 elbrus-v4:pm elbrus-v5:64 elbrus-v5:32 elbrus-v5:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 elbrus-8c:pm elbrus-8c:64 elbrus-8c:32 el
Обратите внимание на флаги:
  -d, --disassemble        Display assembler contents of executable sections
  -D, --disassemble-all    Display assembler contents of all sections
Дизассемблировать он умеет. И основан он на исходниках FSF. И этот objdump это вообще часть пакета binutils. Можно через strings поискать что-нибудь из инструкций деления:
.../lcc-1.20.17.e2k-generic.3.14/binutils/bin$ strings e2k-linux-objdump | grep "div"
DW_OP_div
udivx
sdivx
sdivs
sdivd
udivs
udivd
fxdivss
fxdivsx
fxdivdd
fxdivdx
fxdivxx
fxdivxd
fxdivxs
fxdivtss
fxdivtdd
fxdivtsx
fxdivtdx
pfdivs
pfdivd
trunc_div
Odivide
__divdi3
__udivmoddi4
__udivdi3
__divdi3
__udivdi3
И да, такие инструкции действительно есть. http://www.mcst.ru/files/5ed39a/dd0cd8/50506b/000000/elbrus_prog_2020-05-30.pdf - смотрите страницу 144 - там есть udivx sdivx sdivs sdivd ...

Т.е. они взяли binutils-ы и их пропатчили. Ч.Т.Д.