Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Algol68
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C with Coccinelle
C++ with Coccinelle
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
GLSL
Go
Haskell
HLSL
Hook
Hylo
IL
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Mojo
Nim
Numba
Nix
Objective-C
Objective-C++
OCaml
Odin
OpenCL C
Pascal
Pony
PTX
Python
Racket
Raku
Ruby
Rust
Sail
Snowball
Scala
Slang
Solidity
Spice
SPIR-V
Swift
LLVM TableGen
Toit
Triton
TypeScript Native
V
Vala
Visual Basic
Vyper
WASM
Zig
Javascript
GIMPLE
Ygen
sway
ada source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
S390X GNAT 11.2.0
S390X GNAT 12.1.0
S390X GNAT 12.2.0
S390X GNAT 12.3.0
S390X GNAT 12.4.0
S390X GNAT 12.5.0
S390X GNAT 13.1.0
S390X GNAT 13.2.0
S390X GNAT 13.3.0
S390X GNAT 13.4.0
S390X GNAT 14.1.0
S390X GNAT 14.2.0
S390X GNAT 14.3.0
S390X GNAT 15.1.0
S390X GNAT 15.2.0
arm gnat 10.3.0-2 (Alire)
arm gnat 11.2.0-3 (Alire)
arm gnat 13.1.0
arm gnat 13.2.0
arm gnat 13.3.0
arm gnat 13.4.0
arm gnat 14.1.0
arm gnat 14.2.0
arm gnat 14.3.0
arm gnat 15.1.0
arm gnat 15.2.0
arm64 gnat 12.1.0
arm64 gnat 12.2.0
arm64 gnat 12.3.0
arm64 gnat 12.4.0
arm64 gnat 12.5.0
arm64 gnat 13.1.0
arm64 gnat 13.2.0
arm64 gnat 13.3.0
arm64 gnat 13.4.0
arm64 gnat 14.1.0
arm64 gnat 14.2.0
arm64 gnat 14.3.0
arm64 gnat 15.1.0
arm64 gnat 15.2.0
hppa gnat 14.2.0
hppa gnat 14.3.0
hppa gnat 15.1.0
hppa gnat 15.2.0
loongarch64 gnat 14.1.0
loongarch64 gnat 14.2.0
loongarch64 gnat 14.3.0
loongarch64 gnat 15.1.0
loongarch64 gnat 15.2.0
mips gnat 11.2.0
mips gnat 12.1.0
mips gnat 12.2.0
mips gnat 12.3.0
mips gnat 12.4.0
mips gnat 12.5.0
mips gnat 13.1.0
mips gnat 13.2.0
mips gnat 13.3.0
mips gnat 13.4.0
mips gnat 14.1.0
mips gnat 14.2.0
mips gnat 14.3.0
mips gnat 15.1.0
mips gnat 15.2.0
mips64 gnat 11.2.0
mips64 gnat 12.1.0
mips64 gnat 12.2.0
mips64 gnat 12.3.0
mips64 gnat 12.4.0
mips64 gnat 12.5.0
mips64 gnat 13.1.0
mips64 gnat 13.2.0
mips64 gnat 13.3.0
mips64 gnat 13.4.0
mips64 gnat 14.1.0
mips64 gnat 14.2.0
mips64 gnat 14.3.0
mips64 gnat 15.1.0
mips64 gnat 15.2.0
powerpc gnat 11.2.0
powerpc gnat 12.1.0
powerpc gnat 12.2.0
powerpc gnat 12.3.0
powerpc gnat 12.4.0
powerpc gnat 12.5.0
powerpc gnat 13.1.0
powerpc gnat 13.2.0
powerpc gnat 13.3.0
powerpc gnat 13.4.0
powerpc gnat 14.1.0
powerpc gnat 14.2.0
powerpc gnat 14.3.0
powerpc gnat 15.1.0
powerpc gnat 15.2.0
powerpc64 gnat 11.2.0
powerpc64 gnat 12.1.0
powerpc64 gnat 12.2.0
powerpc64 gnat 12.3.0
powerpc64 gnat 12.4.0
powerpc64 gnat 12.5.0
powerpc64 gnat 13.1.0
powerpc64 gnat 13.2.0
powerpc64 gnat 13.3.0
powerpc64 gnat 13.4.0
powerpc64 gnat 14.1.0
powerpc64 gnat 14.2.0
powerpc64 gnat 14.3.0
powerpc64 gnat 15.1.0
powerpc64 gnat 15.2.0
powerpc64 gnat trunk
powerpc64le gnat 11.2.0
powerpc64le gnat 12.1.0
powerpc64le gnat 12.2.0
powerpc64le gnat 12.3.0
powerpc64le gnat 12.4.0
powerpc64le gnat 12.5.0
powerpc64le gnat 13.1.0
powerpc64le gnat 13.2.0
powerpc64le gnat 13.3.0
powerpc64le gnat 13.4.0
powerpc64le gnat 14.1.0
powerpc64le gnat 14.2.0
powerpc64le gnat 14.3.0
powerpc64le gnat 15.1.0
powerpc64le gnat 15.2.0
powerpc64le gnat trunk
riscv64 gnat 10.3.0-2 (Alire)
riscv64 gnat 11.2.0-3 (Alire)
riscv64 gnat 12.3.0
riscv64 gnat 12.4.0
riscv64 gnat 12.5.0
riscv64 gnat 13.1.0
riscv64 gnat 13.2.0
riscv64 gnat 13.3.0
riscv64 gnat 13.4.0
riscv64 gnat 14.1.0
riscv64 gnat 14.2.0
riscv64 gnat 14.3.0
riscv64 gnat 15.1.0
riscv64 gnat 15.2.0
sparc gnat 12.2.0
sparc gnat 12.3.0
sparc gnat 12.4.0
sparc gnat 12.5.0
sparc gnat 13.1.0
sparc gnat 13.2.0
sparc gnat 13.3.0
sparc gnat 13.4.0
sparc gnat 14.1.0
sparc gnat 14.2.0
sparc gnat 14.3.0
sparc gnat 15.1.0
sparc gnat 15.2.0
sparc leon gnat 13.1.0
sparc leon gnat 13.2.0
sparc leon gnat 13.3.0
sparc leon gnat 13.4.0
sparc leon gnat 14.1.0
sparc leon gnat 14.2.0
sparc leon gnat 14.3.0
sparc64 gnat 12.2.0
sparc64 gnat 12.3.0
sparc64 gnat 12.4.0
sparc64 gnat 12.5.0
sparc64 gnat 13.1.0
sparc64 gnat 13.2.0
sparc64 gnat 13.3.0
sparc64 gnat 13.4.0
sparc64 gnat 14.1.0
sparc64 gnat 14.2.0
sparc64 gnat 14.3.0
sparc64 gnat 15.1.0
sparc64 gnat 15.2.0
x86-64 gnat (trunk)
x86-64 gnat 10.2
x86-64 gnat 10.4
x86-64 gnat 10.4 (assertions)
x86-64 gnat 10.5
x86-64 gnat 10.5 (assertions)
x86-64 gnat 11.1
x86-64 gnat 11.1 (assertions)
x86-64 gnat 11.2
x86-64 gnat 11.2 (assertions)
x86-64 gnat 11.3
x86-64 gnat 11.3 (assertions)
x86-64 gnat 11.4
x86-64 gnat 11.4 (assertions)
x86-64 gnat 12.1
x86-64 gnat 12.1 (assertions)
x86-64 gnat 12.2
x86-64 gnat 12.2 (assertions)
x86-64 gnat 12.3
x86-64 gnat 12.3 (assertions)
x86-64 gnat 12.4
x86-64 gnat 12.4 (assertions)
x86-64 gnat 12.5
x86-64 gnat 12.5 (assertions)
x86-64 gnat 13.1
x86-64 gnat 13.1 (assertions)
x86-64 gnat 13.2
x86-64 gnat 13.2 (assertions)
x86-64 gnat 13.3
x86-64 gnat 13.3 (assertions)
x86-64 gnat 13.4
x86-64 gnat 13.4 (assertions)
x86-64 gnat 14.1
x86-64 gnat 14.1 (assertions)
x86-64 gnat 14.2
x86-64 gnat 14.2 (assertions)
x86-64 gnat 14.3
x86-64 gnat 14.3 (assertions)
x86-64 gnat 15.1
x86-64 gnat 15.1 (assertions)
x86-64 gnat 15.2
x86-64 gnat 15.2 (assertions)
x86-64 gnat 8.2
x86-64 gnat 9.5
Options
Source code
with Ada.Text_IO; use Ada.Text_IO; with Proto_Seq; procedure Example is type Part1_Imod is mod 4; subtype Part1_Indexes is Part1_Imod range 0 .. 3; package Part1_Proto is new Proto_Seq (Part1_Indexes); type Part2_Imod is mod 14; subtype Part2_Indexes is Part2_Imod range 0 .. 13; package Part2_Proto is new Proto_Seq (Part2_Indexes); begin Put_Line ("Part 1 : " & Part1_Proto.Do_The_Work'Image); Put_Line ("Part 2 : " & Part2_Proto.Do_The_Work'Image); end Example;
ada source #2
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
S390X GNAT 11.2.0
S390X GNAT 12.1.0
S390X GNAT 12.2.0
S390X GNAT 12.3.0
S390X GNAT 12.4.0
S390X GNAT 12.5.0
S390X GNAT 13.1.0
S390X GNAT 13.2.0
S390X GNAT 13.3.0
S390X GNAT 13.4.0
S390X GNAT 14.1.0
S390X GNAT 14.2.0
S390X GNAT 14.3.0
S390X GNAT 15.1.0
S390X GNAT 15.2.0
arm gnat 10.3.0-2 (Alire)
arm gnat 11.2.0-3 (Alire)
arm gnat 13.1.0
arm gnat 13.2.0
arm gnat 13.3.0
arm gnat 13.4.0
arm gnat 14.1.0
arm gnat 14.2.0
arm gnat 14.3.0
arm gnat 15.1.0
arm gnat 15.2.0
arm64 gnat 12.1.0
arm64 gnat 12.2.0
arm64 gnat 12.3.0
arm64 gnat 12.4.0
arm64 gnat 12.5.0
arm64 gnat 13.1.0
arm64 gnat 13.2.0
arm64 gnat 13.3.0
arm64 gnat 13.4.0
arm64 gnat 14.1.0
arm64 gnat 14.2.0
arm64 gnat 14.3.0
arm64 gnat 15.1.0
arm64 gnat 15.2.0
hppa gnat 14.2.0
hppa gnat 14.3.0
hppa gnat 15.1.0
hppa gnat 15.2.0
loongarch64 gnat 14.1.0
loongarch64 gnat 14.2.0
loongarch64 gnat 14.3.0
loongarch64 gnat 15.1.0
loongarch64 gnat 15.2.0
mips gnat 11.2.0
mips gnat 12.1.0
mips gnat 12.2.0
mips gnat 12.3.0
mips gnat 12.4.0
mips gnat 12.5.0
mips gnat 13.1.0
mips gnat 13.2.0
mips gnat 13.3.0
mips gnat 13.4.0
mips gnat 14.1.0
mips gnat 14.2.0
mips gnat 14.3.0
mips gnat 15.1.0
mips gnat 15.2.0
mips64 gnat 11.2.0
mips64 gnat 12.1.0
mips64 gnat 12.2.0
mips64 gnat 12.3.0
mips64 gnat 12.4.0
mips64 gnat 12.5.0
mips64 gnat 13.1.0
mips64 gnat 13.2.0
mips64 gnat 13.3.0
mips64 gnat 13.4.0
mips64 gnat 14.1.0
mips64 gnat 14.2.0
mips64 gnat 14.3.0
mips64 gnat 15.1.0
mips64 gnat 15.2.0
powerpc gnat 11.2.0
powerpc gnat 12.1.0
powerpc gnat 12.2.0
powerpc gnat 12.3.0
powerpc gnat 12.4.0
powerpc gnat 12.5.0
powerpc gnat 13.1.0
powerpc gnat 13.2.0
powerpc gnat 13.3.0
powerpc gnat 13.4.0
powerpc gnat 14.1.0
powerpc gnat 14.2.0
powerpc gnat 14.3.0
powerpc gnat 15.1.0
powerpc gnat 15.2.0
powerpc64 gnat 11.2.0
powerpc64 gnat 12.1.0
powerpc64 gnat 12.2.0
powerpc64 gnat 12.3.0
powerpc64 gnat 12.4.0
powerpc64 gnat 12.5.0
powerpc64 gnat 13.1.0
powerpc64 gnat 13.2.0
powerpc64 gnat 13.3.0
powerpc64 gnat 13.4.0
powerpc64 gnat 14.1.0
powerpc64 gnat 14.2.0
powerpc64 gnat 14.3.0
powerpc64 gnat 15.1.0
powerpc64 gnat 15.2.0
powerpc64 gnat trunk
powerpc64le gnat 11.2.0
powerpc64le gnat 12.1.0
powerpc64le gnat 12.2.0
powerpc64le gnat 12.3.0
powerpc64le gnat 12.4.0
powerpc64le gnat 12.5.0
powerpc64le gnat 13.1.0
powerpc64le gnat 13.2.0
powerpc64le gnat 13.3.0
powerpc64le gnat 13.4.0
powerpc64le gnat 14.1.0
powerpc64le gnat 14.2.0
powerpc64le gnat 14.3.0
powerpc64le gnat 15.1.0
powerpc64le gnat 15.2.0
powerpc64le gnat trunk
riscv64 gnat 10.3.0-2 (Alire)
riscv64 gnat 11.2.0-3 (Alire)
riscv64 gnat 12.3.0
riscv64 gnat 12.4.0
riscv64 gnat 12.5.0
riscv64 gnat 13.1.0
riscv64 gnat 13.2.0
riscv64 gnat 13.3.0
riscv64 gnat 13.4.0
riscv64 gnat 14.1.0
riscv64 gnat 14.2.0
riscv64 gnat 14.3.0
riscv64 gnat 15.1.0
riscv64 gnat 15.2.0
sparc gnat 12.2.0
sparc gnat 12.3.0
sparc gnat 12.4.0
sparc gnat 12.5.0
sparc gnat 13.1.0
sparc gnat 13.2.0
sparc gnat 13.3.0
sparc gnat 13.4.0
sparc gnat 14.1.0
sparc gnat 14.2.0
sparc gnat 14.3.0
sparc gnat 15.1.0
sparc gnat 15.2.0
sparc leon gnat 13.1.0
sparc leon gnat 13.2.0
sparc leon gnat 13.3.0
sparc leon gnat 13.4.0
sparc leon gnat 14.1.0
sparc leon gnat 14.2.0
sparc leon gnat 14.3.0
sparc64 gnat 12.2.0
sparc64 gnat 12.3.0
sparc64 gnat 12.4.0
sparc64 gnat 12.5.0
sparc64 gnat 13.1.0
sparc64 gnat 13.2.0
sparc64 gnat 13.3.0
sparc64 gnat 13.4.0
sparc64 gnat 14.1.0
sparc64 gnat 14.2.0
sparc64 gnat 14.3.0
sparc64 gnat 15.1.0
sparc64 gnat 15.2.0
x86-64 gnat (trunk)
x86-64 gnat 10.2
x86-64 gnat 10.4
x86-64 gnat 10.4 (assertions)
x86-64 gnat 10.5
x86-64 gnat 10.5 (assertions)
x86-64 gnat 11.1
x86-64 gnat 11.1 (assertions)
x86-64 gnat 11.2
x86-64 gnat 11.2 (assertions)
x86-64 gnat 11.3
x86-64 gnat 11.3 (assertions)
x86-64 gnat 11.4
x86-64 gnat 11.4 (assertions)
x86-64 gnat 12.1
x86-64 gnat 12.1 (assertions)
x86-64 gnat 12.2
x86-64 gnat 12.2 (assertions)
x86-64 gnat 12.3
x86-64 gnat 12.3 (assertions)
x86-64 gnat 12.4
x86-64 gnat 12.4 (assertions)
x86-64 gnat 12.5
x86-64 gnat 12.5 (assertions)
x86-64 gnat 13.1
x86-64 gnat 13.1 (assertions)
x86-64 gnat 13.2
x86-64 gnat 13.2 (assertions)
x86-64 gnat 13.3
x86-64 gnat 13.3 (assertions)
x86-64 gnat 13.4
x86-64 gnat 13.4 (assertions)
x86-64 gnat 14.1
x86-64 gnat 14.1 (assertions)
x86-64 gnat 14.2
x86-64 gnat 14.2 (assertions)
x86-64 gnat 14.3
x86-64 gnat 14.3 (assertions)
x86-64 gnat 15.1
x86-64 gnat 15.1 (assertions)
x86-64 gnat 15.2
x86-64 gnat 15.2 (assertions)
x86-64 gnat 8.2
x86-64 gnat 9.5
Options
Source code
djhjvjggdzznllvvrvggscgscsrrffgvfvllfclcrchhwzhzqqlhqhffsdsmmcffnggcttdpttwpwttjvtjvtvqqctcwcmcsswvwzzlnzlnnvbnbdnngmmhchrcrqqhbhllbtllmppgjjtvjvdjvvpcpjcjjfrfzfzzdvzdvvswvvjzzbpzbzzddbndbbgjbjjvpjpjtjqtjqjcjmcjjrtjrjrqqvtvpvwpprhphrhdrddpdhhfsspddqnqwnntrtnrrthrhtrtwtdttmmnvmnmppswsqwqjqwqbqrqbqdbqdqgdqgqtgqqgzzhpzzwswvwmvwwvvrzznwzzbsbhbfhhvcvwvvrzrgzzfhzhhlthlhqhgqgttlmljmlmqqjddtqtctbblplddnqnzqnnzrzjrrqwrqqcfffbdfffspsqswstspsvppqmppdmppdvvfrfddqhqzqddtjddfqfrfllnjjcnnjzjmzmtmddbvdvzvbzzcjzzffdbdbsswshhrwrrfggpccszzzgdgvvlflwwdbbhqhffngffdfdmdgdhdmhdmdsspssctstdtdmdhhzvvcbbrqqmrmwwjmjqjmqjmjjjrmrmlmmbppmgpgttmptpspmmrttcddtjjspsfsqqbhbbzzgbzzznwzzlddmtdmdgmmlnljlvjjtgjjggmmnnvqnqzzfhzhttvbbprpmpmrmlrmllwmlwmlwwsjjlffbgfggqmggqgvglvvrpvrpvpnpphmhnmhhbbqjbbrrvfrfwflldffzwzccscqsqppctctddqbbmggmccdbdvbdvvpdpdbdsdjsjbbwpwcpcbcbmmzdmmvtvqvpvphhlblwwfmwmvvdhdtdwwlblglhhvfvwwqggrnrttpddtvvwqvqmqhhwnnghhbpbvbnvvdqqrqdqwqppmwpwhppnmnjmnjmjttvhhcgchcssrlrwllpdpndpdtptzppqqpvvtffcwffjppvnnjvvjnnwcwnnhlhjhsjsnjjzfjfsfhsssvttvfvsvpspppwswmswwqmwwzvwzzvtzvvwddqqzhhqpqjjwrwlrrbcbvvqllqjllvzvgvmvhmmsppwvpwphhjnndjjtpjtthzzvrrcwcrczzmqmsssvtstqtrrgtrtvtwtccbwcwrwbbdbgbmmcsmcssvjsjqqsnqqtvvbgbfbdffhjffvnnzpplqppzzfwfrfnfcncqccgjjcffhshrhgrhghvhphccqtcqtccjzccdnncggftgttrppnpptlltztqtjqqvfvqvdvmvmjjgqqrqgrqqcggdvvpcvcjvjnnrjjmbmlbmmqvmqmfmwmpwwnhwdtmvhqfwlbpzjplfhfntjgmvqmmjqpbngpvjvpgzpqwjjwhvjwwplrtjhzmzqmdrppgbrspmctlggmflbjzzfcvvdqlrtvqvwhcpjnmlvfgwrwwtblpqstddnqntnmwsbgjfrbdrlnvqdrnttshjmvpmncmggfdbnndwzmswmdvhmmwtgpfglrzzhwcsgvhnnrrhmnhftvvqfdfrsphzbslgscmwsnrwbvqphhswvpvsbbstvnndclhfhdctlvwrmdgzfcfmjmznqvvqrddmdlqznvcsqsgnpcqqhbdwqntcnqljstqvrzhgvzqdltpwmnpvjmqrpjsfhqvhchjnwjnqpdqbdjqdpqsqhbwwmhfthzbrsjnhncpbjrhgqlzmrzlnvrrfvlrmflcqfmqjzjwscrflgzwtbchfrnvsrrtncvhjbnnmlmmfdjcbmbsmgdtwzwcwnthfbsnrgdfwqjncqsdmfnfqgtcwrhjprlnhvrnpmnnhlwstvqjrsprqhjzszzgfznmgwjqglvfrrwpdbptdrnbbwbzbcbhbtcchmfsgmvnmrbdqhqgmvtfmvpgvjzjpgjbdhcfrfhprgdzrprccnhbmzdfjsgldlgpgdrfhbhtmhdttdsbndgbdfccqhhwhqfmlsfhsbbbmdncrwzcnrdvcmhllfwtrgjpgngzwptnqtggtcjwrptffmsrgdpctsdjtpssngsdqwfsbhdbcqvbdrzlhzlsbbzhqthzhcwsftlhrmhgpfzljgcphjjvhpqjzsfnrztwrhlnlbmgcgmstrbbwclpvdtdpclzlhmmpmmpmppnwjglhwppprlbzbvwqwmpgtvvpgdthnwbtblwpwgvmbcbjwjbczlcmzfwzbqvzsvgcmspvrsblldscqlgghdwzbvhhvgcfwgnqwlngclbjfwrpwtdjvqmzwwjztwdjplhzpzfslbbvfdsnpggwcttzwdlzgqgmrnpnclhrlngtwcwblzdjmpgqvzsvsdmzdwlgcdlccnnlrcvtrvspcsmgmzzvwnlzwtznwtqtdjcnhwrqhqrmvqqhrpdtnsmfrlcgpjcnddsqzcppgrnhvwsdbjvvtmvbjdncpdnmzfswmtvzfbdpqfjvwvqlhptnpdfdnlwfrgstpvvmhsqfgggdrsfgldfzbcjzhqzvfwmzccwjrslhjwlbmrpqgzdfnfbhsmdpzwtqnqldtqvshvlvmlnnmqrqbpwvnhqhtcbfclhrcqlqzhsqplsnbczvrbzqwlfwjdtmstzdbswtrvlpzzlrfvgdmldbwcttztrvsgzjwhhpcrvtgzfzppdlrdwswbnjfqqpqfbcqlzdmjsgjtzmvhdzspwlqpdjnccmbtdhnnhfvwqclbzzgglfgmvvgrccdsbwfmpvqwqrhmdzfhhhgbgjgwmnzmnggfrpspchvzpcmcpsbzgldmgqjqqdcjpwwncwrwjbhgzdbbcmbzbbtvprsjrhfwgsppdrrlzvnmtmwrmmrhtlndvsvjvgqmmttbbnpdhnjhwgrvlrdtpbrtwpwvvpslcqnvnrlhpvgdwnrzjmhwmgvpndtrjlzqpfzfbrsgbzjjqcfgsfwchblzstdflblngtzbrzrrvsczqvfhjjdlffrghgqvqfdtstqlnzllsrnnrtvrzdphbhdfpmhlfncqbdtzjqqcfbzpvgzdcsvvbfdvqrfrncbrwmpdmhnlqdscwnvldzblpzfqcvnbzmmtbmwjbczsjvzmfthfpvjcpwftqcbgjwflfrbrggwnvwndtncljfrdfwqwhfbctpjghfvnjnntnrgbfbmhplgmpfvmgvfqjslgnnrnlgztlstpcjwtlhmwlljcfmptfwsphnlsrjwmgtghgqmsvwvqsmblwpdftbrwjcdlzjmjblghszznqhsnqrcmtccgdwrrlsmwswvrjltqmwsdwvpnzltllhrsdvmrntdhtwwbgrqmrffnqbqrczvzchbgmzwtjtfzwntsnlbwbgrlvqjsqmdnwjqlwrdpnfpggzrjvtrhqdbmmbtfmmblgwtrqccqbjnljqflhgtphvrgrgghgrpbgfgdztsmfwrfflsqmrwbfjwsmpfrnbqjwnwdqwcwzpwbsmngjwfmbwdmnprdjnjbmqgfcbvtcvcthpmnmvvzdzgqqbhtjqfcdvhfzwqgfsbtvnwbzpmmtswfntjjppsswgbfrjbrstltdgbmclmbfvlslghbhnqqbdlzgtctgsfnwvbpzbvnwfbjmbfqcpqqvgrzwcbrwzdbdsjsslcjlmtprntpsdmqldzwqlqztwqtqfqzmrnzbtpqlfnsdwfdgggfvmqmrdqmnffnzcwfzsrqfpvrmsfsrbnpbhnqvdglvglllpggpmwmngrhzwgpdlzrbsvjtqmshhnlzwwftdtqwrqwgbbnczqcwmsvcljqlscftwflhwwhgnqwztfchdzsllrzbhbqwcfztjnqtdmsfnlzlcwzfmtlcgwclzfhhldgrnfjvzthzqzmzvwcrnhpdcwswpddsbwtznwlcwsnfqnqwnntngplwnfgwrcnpvgffwrcrszzdbfvzjmrmlrjwcvdvbglgncjwcnnpdfnwsrzsvzgnjrlqmwhvtdgmpbqmjthmhhmzjhpvnbvrqnlspdbcgshwlnvwpvrbcmvbvcsdmgwtmsthqtcfmllsfwvqcrbmdgqtzjwrg
ada source #3
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
S390X GNAT 11.2.0
S390X GNAT 12.1.0
S390X GNAT 12.2.0
S390X GNAT 12.3.0
S390X GNAT 12.4.0
S390X GNAT 12.5.0
S390X GNAT 13.1.0
S390X GNAT 13.2.0
S390X GNAT 13.3.0
S390X GNAT 13.4.0
S390X GNAT 14.1.0
S390X GNAT 14.2.0
S390X GNAT 14.3.0
S390X GNAT 15.1.0
S390X GNAT 15.2.0
arm gnat 10.3.0-2 (Alire)
arm gnat 11.2.0-3 (Alire)
arm gnat 13.1.0
arm gnat 13.2.0
arm gnat 13.3.0
arm gnat 13.4.0
arm gnat 14.1.0
arm gnat 14.2.0
arm gnat 14.3.0
arm gnat 15.1.0
arm gnat 15.2.0
arm64 gnat 12.1.0
arm64 gnat 12.2.0
arm64 gnat 12.3.0
arm64 gnat 12.4.0
arm64 gnat 12.5.0
arm64 gnat 13.1.0
arm64 gnat 13.2.0
arm64 gnat 13.3.0
arm64 gnat 13.4.0
arm64 gnat 14.1.0
arm64 gnat 14.2.0
arm64 gnat 14.3.0
arm64 gnat 15.1.0
arm64 gnat 15.2.0
hppa gnat 14.2.0
hppa gnat 14.3.0
hppa gnat 15.1.0
hppa gnat 15.2.0
loongarch64 gnat 14.1.0
loongarch64 gnat 14.2.0
loongarch64 gnat 14.3.0
loongarch64 gnat 15.1.0
loongarch64 gnat 15.2.0
mips gnat 11.2.0
mips gnat 12.1.0
mips gnat 12.2.0
mips gnat 12.3.0
mips gnat 12.4.0
mips gnat 12.5.0
mips gnat 13.1.0
mips gnat 13.2.0
mips gnat 13.3.0
mips gnat 13.4.0
mips gnat 14.1.0
mips gnat 14.2.0
mips gnat 14.3.0
mips gnat 15.1.0
mips gnat 15.2.0
mips64 gnat 11.2.0
mips64 gnat 12.1.0
mips64 gnat 12.2.0
mips64 gnat 12.3.0
mips64 gnat 12.4.0
mips64 gnat 12.5.0
mips64 gnat 13.1.0
mips64 gnat 13.2.0
mips64 gnat 13.3.0
mips64 gnat 13.4.0
mips64 gnat 14.1.0
mips64 gnat 14.2.0
mips64 gnat 14.3.0
mips64 gnat 15.1.0
mips64 gnat 15.2.0
powerpc gnat 11.2.0
powerpc gnat 12.1.0
powerpc gnat 12.2.0
powerpc gnat 12.3.0
powerpc gnat 12.4.0
powerpc gnat 12.5.0
powerpc gnat 13.1.0
powerpc gnat 13.2.0
powerpc gnat 13.3.0
powerpc gnat 13.4.0
powerpc gnat 14.1.0
powerpc gnat 14.2.0
powerpc gnat 14.3.0
powerpc gnat 15.1.0
powerpc gnat 15.2.0
powerpc64 gnat 11.2.0
powerpc64 gnat 12.1.0
powerpc64 gnat 12.2.0
powerpc64 gnat 12.3.0
powerpc64 gnat 12.4.0
powerpc64 gnat 12.5.0
powerpc64 gnat 13.1.0
powerpc64 gnat 13.2.0
powerpc64 gnat 13.3.0
powerpc64 gnat 13.4.0
powerpc64 gnat 14.1.0
powerpc64 gnat 14.2.0
powerpc64 gnat 14.3.0
powerpc64 gnat 15.1.0
powerpc64 gnat 15.2.0
powerpc64 gnat trunk
powerpc64le gnat 11.2.0
powerpc64le gnat 12.1.0
powerpc64le gnat 12.2.0
powerpc64le gnat 12.3.0
powerpc64le gnat 12.4.0
powerpc64le gnat 12.5.0
powerpc64le gnat 13.1.0
powerpc64le gnat 13.2.0
powerpc64le gnat 13.3.0
powerpc64le gnat 13.4.0
powerpc64le gnat 14.1.0
powerpc64le gnat 14.2.0
powerpc64le gnat 14.3.0
powerpc64le gnat 15.1.0
powerpc64le gnat 15.2.0
powerpc64le gnat trunk
riscv64 gnat 10.3.0-2 (Alire)
riscv64 gnat 11.2.0-3 (Alire)
riscv64 gnat 12.3.0
riscv64 gnat 12.4.0
riscv64 gnat 12.5.0
riscv64 gnat 13.1.0
riscv64 gnat 13.2.0
riscv64 gnat 13.3.0
riscv64 gnat 13.4.0
riscv64 gnat 14.1.0
riscv64 gnat 14.2.0
riscv64 gnat 14.3.0
riscv64 gnat 15.1.0
riscv64 gnat 15.2.0
sparc gnat 12.2.0
sparc gnat 12.3.0
sparc gnat 12.4.0
sparc gnat 12.5.0
sparc gnat 13.1.0
sparc gnat 13.2.0
sparc gnat 13.3.0
sparc gnat 13.4.0
sparc gnat 14.1.0
sparc gnat 14.2.0
sparc gnat 14.3.0
sparc gnat 15.1.0
sparc gnat 15.2.0
sparc leon gnat 13.1.0
sparc leon gnat 13.2.0
sparc leon gnat 13.3.0
sparc leon gnat 13.4.0
sparc leon gnat 14.1.0
sparc leon gnat 14.2.0
sparc leon gnat 14.3.0
sparc64 gnat 12.2.0
sparc64 gnat 12.3.0
sparc64 gnat 12.4.0
sparc64 gnat 12.5.0
sparc64 gnat 13.1.0
sparc64 gnat 13.2.0
sparc64 gnat 13.3.0
sparc64 gnat 13.4.0
sparc64 gnat 14.1.0
sparc64 gnat 14.2.0
sparc64 gnat 14.3.0
sparc64 gnat 15.1.0
sparc64 gnat 15.2.0
x86-64 gnat (trunk)
x86-64 gnat 10.2
x86-64 gnat 10.4
x86-64 gnat 10.4 (assertions)
x86-64 gnat 10.5
x86-64 gnat 10.5 (assertions)
x86-64 gnat 11.1
x86-64 gnat 11.1 (assertions)
x86-64 gnat 11.2
x86-64 gnat 11.2 (assertions)
x86-64 gnat 11.3
x86-64 gnat 11.3 (assertions)
x86-64 gnat 11.4
x86-64 gnat 11.4 (assertions)
x86-64 gnat 12.1
x86-64 gnat 12.1 (assertions)
x86-64 gnat 12.2
x86-64 gnat 12.2 (assertions)
x86-64 gnat 12.3
x86-64 gnat 12.3 (assertions)
x86-64 gnat 12.4
x86-64 gnat 12.4 (assertions)
x86-64 gnat 12.5
x86-64 gnat 12.5 (assertions)
x86-64 gnat 13.1
x86-64 gnat 13.1 (assertions)
x86-64 gnat 13.2
x86-64 gnat 13.2 (assertions)
x86-64 gnat 13.3
x86-64 gnat 13.3 (assertions)
x86-64 gnat 13.4
x86-64 gnat 13.4 (assertions)
x86-64 gnat 14.1
x86-64 gnat 14.1 (assertions)
x86-64 gnat 14.2
x86-64 gnat 14.2 (assertions)
x86-64 gnat 14.3
x86-64 gnat 14.3 (assertions)
x86-64 gnat 15.1
x86-64 gnat 15.1 (assertions)
x86-64 gnat 15.2
x86-64 gnat 15.2 (assertions)
x86-64 gnat 8.2
x86-64 gnat 9.5
Options
Source code
with Ada.Text_IO; use Ada.Text_IO; with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; with Ada.Strings.Unbounded.Text_IO; use Ada.Strings.Unbounded.Text_IO; with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; package body Proto_Seq is type Data_Type is array (Indexes) of Character; type Ring_Buffer is record Next_In : Indexes; Data : Data_Type; end record; procedure Push (R : in out Ring_Buffer; E : Character) is begin R.Data (R.Next_In) := E; R.Next_In := R.Next_In + Indexes (1); end Push; function Unique_Count (R : Ring_Buffer) return Natural is C : Natural := 0; Unique : Boolean := True; begin for A in 0 .. Indexes'Last loop Unique := True; inner: for B in A + 1 .. Indexes'Last loop if R.Data (A) = R.Data (B) then Unique := False; exit inner; end if; end loop inner; if Unique then C := C + 1; end if; end loop; return C; end Unique_Count; Line : Unbounded_String; Fifo : Ring_Buffer := (Data => (others => ' '), others => 0); function Do_The_Work return Natural is Cur : Character; Read_Count : Natural := 0; F : File_Type; begin Open (F, In_File, "input"); while (not Ada.Text_IO.End_Of_File (F)) loop Get (F, Cur); Read_Count := Read_Count + 1; Push (Fifo, Cur); if Unique_Count (Fifo) = Integer (Indexes'Last) and then Read_Count > Integer (Indexes'Last) then exit; end if; end loop; Close (F); return Read_Count; end Do_The_Work; end Proto_Seq;
ada source #4
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
S390X GNAT 11.2.0
S390X GNAT 12.1.0
S390X GNAT 12.2.0
S390X GNAT 12.3.0
S390X GNAT 12.4.0
S390X GNAT 12.5.0
S390X GNAT 13.1.0
S390X GNAT 13.2.0
S390X GNAT 13.3.0
S390X GNAT 13.4.0
S390X GNAT 14.1.0
S390X GNAT 14.2.0
S390X GNAT 14.3.0
S390X GNAT 15.1.0
S390X GNAT 15.2.0
arm gnat 10.3.0-2 (Alire)
arm gnat 11.2.0-3 (Alire)
arm gnat 13.1.0
arm gnat 13.2.0
arm gnat 13.3.0
arm gnat 13.4.0
arm gnat 14.1.0
arm gnat 14.2.0
arm gnat 14.3.0
arm gnat 15.1.0
arm gnat 15.2.0
arm64 gnat 12.1.0
arm64 gnat 12.2.0
arm64 gnat 12.3.0
arm64 gnat 12.4.0
arm64 gnat 12.5.0
arm64 gnat 13.1.0
arm64 gnat 13.2.0
arm64 gnat 13.3.0
arm64 gnat 13.4.0
arm64 gnat 14.1.0
arm64 gnat 14.2.0
arm64 gnat 14.3.0
arm64 gnat 15.1.0
arm64 gnat 15.2.0
hppa gnat 14.2.0
hppa gnat 14.3.0
hppa gnat 15.1.0
hppa gnat 15.2.0
loongarch64 gnat 14.1.0
loongarch64 gnat 14.2.0
loongarch64 gnat 14.3.0
loongarch64 gnat 15.1.0
loongarch64 gnat 15.2.0
mips gnat 11.2.0
mips gnat 12.1.0
mips gnat 12.2.0
mips gnat 12.3.0
mips gnat 12.4.0
mips gnat 12.5.0
mips gnat 13.1.0
mips gnat 13.2.0
mips gnat 13.3.0
mips gnat 13.4.0
mips gnat 14.1.0
mips gnat 14.2.0
mips gnat 14.3.0
mips gnat 15.1.0
mips gnat 15.2.0
mips64 gnat 11.2.0
mips64 gnat 12.1.0
mips64 gnat 12.2.0
mips64 gnat 12.3.0
mips64 gnat 12.4.0
mips64 gnat 12.5.0
mips64 gnat 13.1.0
mips64 gnat 13.2.0
mips64 gnat 13.3.0
mips64 gnat 13.4.0
mips64 gnat 14.1.0
mips64 gnat 14.2.0
mips64 gnat 14.3.0
mips64 gnat 15.1.0
mips64 gnat 15.2.0
powerpc gnat 11.2.0
powerpc gnat 12.1.0
powerpc gnat 12.2.0
powerpc gnat 12.3.0
powerpc gnat 12.4.0
powerpc gnat 12.5.0
powerpc gnat 13.1.0
powerpc gnat 13.2.0
powerpc gnat 13.3.0
powerpc gnat 13.4.0
powerpc gnat 14.1.0
powerpc gnat 14.2.0
powerpc gnat 14.3.0
powerpc gnat 15.1.0
powerpc gnat 15.2.0
powerpc64 gnat 11.2.0
powerpc64 gnat 12.1.0
powerpc64 gnat 12.2.0
powerpc64 gnat 12.3.0
powerpc64 gnat 12.4.0
powerpc64 gnat 12.5.0
powerpc64 gnat 13.1.0
powerpc64 gnat 13.2.0
powerpc64 gnat 13.3.0
powerpc64 gnat 13.4.0
powerpc64 gnat 14.1.0
powerpc64 gnat 14.2.0
powerpc64 gnat 14.3.0
powerpc64 gnat 15.1.0
powerpc64 gnat 15.2.0
powerpc64 gnat trunk
powerpc64le gnat 11.2.0
powerpc64le gnat 12.1.0
powerpc64le gnat 12.2.0
powerpc64le gnat 12.3.0
powerpc64le gnat 12.4.0
powerpc64le gnat 12.5.0
powerpc64le gnat 13.1.0
powerpc64le gnat 13.2.0
powerpc64le gnat 13.3.0
powerpc64le gnat 13.4.0
powerpc64le gnat 14.1.0
powerpc64le gnat 14.2.0
powerpc64le gnat 14.3.0
powerpc64le gnat 15.1.0
powerpc64le gnat 15.2.0
powerpc64le gnat trunk
riscv64 gnat 10.3.0-2 (Alire)
riscv64 gnat 11.2.0-3 (Alire)
riscv64 gnat 12.3.0
riscv64 gnat 12.4.0
riscv64 gnat 12.5.0
riscv64 gnat 13.1.0
riscv64 gnat 13.2.0
riscv64 gnat 13.3.0
riscv64 gnat 13.4.0
riscv64 gnat 14.1.0
riscv64 gnat 14.2.0
riscv64 gnat 14.3.0
riscv64 gnat 15.1.0
riscv64 gnat 15.2.0
sparc gnat 12.2.0
sparc gnat 12.3.0
sparc gnat 12.4.0
sparc gnat 12.5.0
sparc gnat 13.1.0
sparc gnat 13.2.0
sparc gnat 13.3.0
sparc gnat 13.4.0
sparc gnat 14.1.0
sparc gnat 14.2.0
sparc gnat 14.3.0
sparc gnat 15.1.0
sparc gnat 15.2.0
sparc leon gnat 13.1.0
sparc leon gnat 13.2.0
sparc leon gnat 13.3.0
sparc leon gnat 13.4.0
sparc leon gnat 14.1.0
sparc leon gnat 14.2.0
sparc leon gnat 14.3.0
sparc64 gnat 12.2.0
sparc64 gnat 12.3.0
sparc64 gnat 12.4.0
sparc64 gnat 12.5.0
sparc64 gnat 13.1.0
sparc64 gnat 13.2.0
sparc64 gnat 13.3.0
sparc64 gnat 13.4.0
sparc64 gnat 14.1.0
sparc64 gnat 14.2.0
sparc64 gnat 14.3.0
sparc64 gnat 15.1.0
sparc64 gnat 15.2.0
x86-64 gnat (trunk)
x86-64 gnat 10.2
x86-64 gnat 10.4
x86-64 gnat 10.4 (assertions)
x86-64 gnat 10.5
x86-64 gnat 10.5 (assertions)
x86-64 gnat 11.1
x86-64 gnat 11.1 (assertions)
x86-64 gnat 11.2
x86-64 gnat 11.2 (assertions)
x86-64 gnat 11.3
x86-64 gnat 11.3 (assertions)
x86-64 gnat 11.4
x86-64 gnat 11.4 (assertions)
x86-64 gnat 12.1
x86-64 gnat 12.1 (assertions)
x86-64 gnat 12.2
x86-64 gnat 12.2 (assertions)
x86-64 gnat 12.3
x86-64 gnat 12.3 (assertions)
x86-64 gnat 12.4
x86-64 gnat 12.4 (assertions)
x86-64 gnat 12.5
x86-64 gnat 12.5 (assertions)
x86-64 gnat 13.1
x86-64 gnat 13.1 (assertions)
x86-64 gnat 13.2
x86-64 gnat 13.2 (assertions)
x86-64 gnat 13.3
x86-64 gnat 13.3 (assertions)
x86-64 gnat 13.4
x86-64 gnat 13.4 (assertions)
x86-64 gnat 14.1
x86-64 gnat 14.1 (assertions)
x86-64 gnat 14.2
x86-64 gnat 14.2 (assertions)
x86-64 gnat 14.3
x86-64 gnat 14.3 (assertions)
x86-64 gnat 15.1
x86-64 gnat 15.1 (assertions)
x86-64 gnat 15.2
x86-64 gnat 15.2 (assertions)
x86-64 gnat 8.2
x86-64 gnat 9.5
Options
Source code
generic type Indexes is mod <>; package Proto_Seq is function Do_The_Work return Natural; end Proto_Seq;
Become a Patron
Sponsor on GitHub
Donate via PayPal
Compiler Explorer Shop
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
CE on Bluesky
Statistics
Changelog
Version tree