일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 신
- CerberoSuite
- msticpy
- Cerbero
- 소설
- 처음이자마지막일듯
- YARA
- cannot find or open
- fuzzer
- 부의본능
- 악성코드
- 뚝썸유원지
- protoc
- 베르나르
- 이런사람만나지마세요
- 복층루희네집
- threatintelligence
- 독서
- iphone11
- Error
- 똑딱이졸업하는그날까지
- python
- 인텔리전스
- 아이폰11
- 존엄하게산다는것
- Hexeditor
- Git
- 악성크도
- RX100
- 아이폰12
- Today
- Total
qingfro9님의 블로그 입니다.
에이다(ADA) 본문
음 미리알림에 키워드 등록하다가 "ADA 컴파일러 공부"라고 적어둔게 있어서 좀 간단히 알아보았다.
에이다는 뭐냐면 이거다.
Ada[에이다]는 파스칼과 다소 비슷한 프로그래밍 언어로서, 경쟁을 통해 미국 국방부 표준으로 선정되었다 (이 이름은 기계식 해석엔진 내에서 프로그램들이 어떻게 동작하는지를 이해한 찰스 바베지를 돕던 Augusta Ada Byron을 위해 지어졌다. 그녀는 종종 세계 최초의 컴퓨터 프로그래머라고 간주되고 있다). Ada는 원래 실시간 장착 시스템을 위해 의도된 것이다. |
요약 |
아래 블로그를 보면, ADA는 시그윈(Cygwin)을 설치하면 컴파일러를 쉽게 사용할 수 있는 것으로 보이며, 간단한 예제코드가 있어서 아래 적어봤다.
//"Hello, Ada?" 코드
With Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line("Hello, Ada?");
end Hello;
//컴파일 명령어
$ gnatmake Hello.ada
컴파일하게 되면 exe 파일이 생성되는 것으로 보인다. 흠.? 구조가 궁금하긴 하다.
아래 블로그에서 추천해주는 ADA95 튜토리얼 이 잘 작성되어 있는거 같으니, 공부할거면 이거 보고 하면 좋을거 같다.
오래된 언어여서..뭐 쓰일까?
구조 궁금해서 컴파일 할려는데,gnatmake가 설치가 안되있어서, ada compiler를 검색하다가 AdaCore라는 사이트에서 받을 수 있는 것을 확인.!
https://www.adacore.com/download
380MB...
아....잠깐.. 뭔가 커진다 일이.. 일단 VM에다가 설치해서 해바야겠다.
무슨문제인지 모르겠지만;; 잘 안되지만 가운대 버튼이 NEXT 겠찌해서 그냥 무조건 가운데 누르기(위에 보면 Installation Folder가 써있는걸 볼 수 있고, 이거 보면, 설치 준비 다됨.! 이라고 영어 나오면 한번 더 누르면 설치됨..! / 64bit win10에서는 잘되네)
아..64bit에서 해야하는구나.!(다행이도 전에 게임분석하면서 윈10 64bit가 있네)
GPS가 설치되어서, 뭔가 했는데 GNAT Programming Studio의 약어였다. 목적이 컴파일이니 컴파일 하고 파일만 업로드 하고 끝내자.
컴파일이 잘안되서 검색했는데, "C:\GNAT\2019\bin"에 gnatmake.exe 파일이 있길래 사용해봤다.
대강보니 resource data에 아래 처럼 ada관련 문자열들이 존재하는게 보이는구만! 나중에 보면 의심하고 그때 분석하는법 알아봐야징 오늘은 이만..
아래 첨부했으니 궁금한 분은 사용하세요.
기타
gnatmake help 결과
Usage: gnatmake opts name {[-cargs opts] [-bargs opts] [-largs opts] [-margs opts]}
name is one or more file name from which you can omit the .adb or .ads suffix
gnatmake switches:
--version Display version and exit
--help Display usage and exit
-a Consider all files, even readonly ali files
-b Bind only
-B Build, bind and link full project
-c Compile only
-C Cache source mappings: invoke compiler with temp mapping file
-C=mapp Cache source mappings: invoke compiler with mapping file mapp
-d Display compilation progress
-D dir Specify dir as the object directory
-eI Index of unit in multi-unit source file
-eL Follow symbolic links when processing project files
-eS Echo commands to stdout instead of stderr
-f Force recompilations of non predefined units
-F Full project path name in brief error messages
-i In place. Replace existing ali file, or put it with source
-jnum Use nnn processes to compile
-k Keep going after compilation errors
-l Link only
-m Minimal recompilation
-M List object file dependences for Makefile
-n Check objects up to date, output next file to compile if not
-o name Choose an alternate executable name
-p Create missing obj, lib and exec dirs
-Pproj Use GNAT Project File proj
-q Be quiet/terse
-R Do not use a run_path_option when linking
-s Recompile if compiler switches have changed
-u Unique compilation, only compile the given files
-U Unique compilation for all sources of all projects
-v Display reasons for all (re)compilations
-vl Verbose output (low verbosity)
-vm Verbose output (medium verbosity)
-vh Equivalent to -v (high verbosity)
-vPx Specify verbosity when parsing GNAT Project Files
-we Treat all warnings as errors
-wn Normal warning mode (cancels -we/-ws)
-ws Suppress all warnings
-x Allow compilation of needed units external to the projects
-Xnm=val Specify an external reference for GNAT Project Files
-z No main subprogram (zero main)
--create-map-file Create map file mainprog.map
--create-map-file=mapfile
Create map file mapfile
--keep-temp-files Keep temporary files
--GCC=command Use this gcc command
--GNATBIND=command Use this gnatbind command
--GNATLINK=command Use this gnatlink command
Project, Source and Library search path switches:
-aPdir Add directory dir to project search path
-aLdir Skip missing library sources if ali in dir
-Adir like -aLdir -aIdir
-aOdir Specify library/object files search path
-aIdir Specify source files search path
-Idir Like -aIdir -aOdir
-I- Don't look for sources & library files in the default directory
-Ldir Look for program libraries also in dir
-nostdinc Don't look for sources in the system default directory
-nostdlib Don't look for library files in the system default directory
--RTS=dir specify the default source and object search path
--subdirs=dir real obj/lib/exec dirs are subdirs
--source-info=file specify a source info file
--unchecked-shared-lib-imports
Allow shared libraries to import static libraries
To pass an arbitrary switch to the Compiler, Binder or Linker:
-cargs opts opts are passed to the compiler
-bargs opts opts are passed to the binder
-largs opts opts are passed to the linker
-margs opts opts are passed to gnatmake
Compiler switches (passed to the compiler by gnatmake):
-g Generate debugging information
-Idir Specify source files search path
-I- Do not look for sources in current directory
-O[0123] Control the optimization level
-gnata Assertions enabled. Pragma Assert/Debug to be activated
-gnatA Avoid processing gnat.adc, if present file will be ignored
-gnatb Generate brief messages to stderr even if verbose mode set
-gnatB Assume no bad (invalid) values except in 'Valid attribute
-gnatc Check syntax and semantics only (no code generation)
-gnatC Generate CodePeer intermediate format (no code generation)
-gnatd? Compiler debug option ? ([.]a-z,A-Z,0-9), see debug.adb
-gnatD Debug expanded generated code (max line length = 72)
-gnatDnn Debug expanded generated code (max line length = nn)
-gnateA Aliasing checks on subprogram parameters
-gnatec=? Specify configuration pragmas file, e.g. -gnatec=/x/f.adc
-gnateC Generate CodePeer messages (ignored without -gnatcC)
-gnated Disable synchronization of atomic variables
-gnateD? Define or redefine preprocessing symbol, e.g. -gnateDsym=val
-gnateE Generate extra information in exception messages
-gnatef Full source path in brief error messages
-gnateF Check overflow on predefined Float types
-gnateG Generate preprocessed source
-gnateinn Set maximum number of instantiations to nn
-gnateInn Index in multi-unit source, e.g. -gnateI2
-gnatel Turn on info messages on generated Elaborate[_All] pragmas
-gnateL Turn off info messages on generated Elaborate[_All] pragmas
-gnatem=? Specify mapping file, e.g. -gnatem=mapping
-gnatep=? Specify preprocessing data file, e.g. -gnatep=prep.data
-gnateP Pure/Prelaborate errors generate warnings rather than errors
-gnateS Generate SCO (Source Coverage Obligation) information
-gnatet=? Write target dependent information file ?, e.g. gnatet=tdf
-gnateT=? Read target dependent information file ?, e.g. gnateT=tdf
-gnateu Ignore unrecognized style/validity/warning switches
-gnateV Validity checks on subprogram parameters
-gnateY Ignore all Style_Checks pragmas in source
-gnatE Dynamic elaboration checking mode enabled
-gnatf Full errors. Verbose details, all undefined references
-gnatF Force all import/export external names to all uppercase
-gnatg GNAT implementation mode (used for compiling GNAT units)
-gnatG Output generated expanded code (max line length = 72)
-gnatGnn Output generated expanded code (max line length = nn)
-gnath Output this usage (help) information
-gnatH Legacy elaboration checking mode enabled
-gnati? Identifier char set (?=1/2/3/4/5/8/9/p/f/n/w)
-gnatI Ignore all representation clauses
-gnatjnn Format error and warning messages to fit nn character lines
-gnatJ Relaxed elaboration checking mode enabled
-gnatk Limit file names to nn characters (k = krunch)
-gnatl Output full source listing with embedded error messages
-gnatl=f Output full source listing to specified file
-gnatL List corresponding source text in -gnatG or -gnatD output
-gnatmnn Limit number of detected errors/warnings to nn (1-999999)
-gnatn[?] Enable pragma Inline across units (?=1/2 for moderate/full)
-gnato0 Disable overflow checking
-gnato Enable overflow checking in STRICT (-gnato1) mode (default)
-gnato? Enable overflow checks in STRICT/MINIMIZED/ELIMINATED (1/2/3) mode
-gnato?? Set mode for general/assertion expressions separately
-gnatp Suppress all checks
-gnatP Generate periodic calls to System.Polling.Poll
-gnatq Don't quit, try semantics, even if parse errors
-gnatQ Don't quit, write ali/tree file even if compile errors
-gnatr Treat pragma Restrictions as Restriction_Warnings
-gnatR? List rep info (?=0/1/2/3/4/e/m for none/types/all/sym/cg/ext/mech)
-gnatR?j List rep info in the JSON data interchange format
-gnatR?s List rep info to file.rep instead of standard output
-gnats Syntax check only
-gnatS Print listing of package Standard
-gnatt Tree output file to be generated
-gnatTnn All compiler tables start at nn times usual starting size
-gnatu List units for this compilation
-gnatU Enable unique tag for error messages
-gnatv Verbose mode. Full error output with source lines to stdout
-gnatVxx Enable selected validity checking mode, xx = list of parameters:
a turn on all validity checking options
c turn on checking for copies
C turn off checking for copies
d turn on default (RM) checking
D turn off default (RM) checking
e turn on checking for elementary components
E turn off checking for elementary components
f turn on checking for floating-point
F turn off checking for floating-point
i turn on checking for in params
I turn off checking for in params
m turn on checking for in out params
M turn off checking for in out params
n turn off all validity checks (including RM)
o turn on checking for operators/attributes
O turn off checking for operators/attributes
p turn on checking for parameters
P turn off checking for parameters
r turn on checking for returns
R turn off checking for returns
s turn on checking for subscripts
S turn off checking for subscripts
t turn on checking for tests
T turn off checking for tests
-gnatwxx Enable selected warning modes, xx = list of parameters:
* indicates default setting
+ indicates warning flag included in -gnatwa
a turn on all info/warnings marked below with +
A turn off all optional info/warnings
.a*+ turn on warnings for failing assertion
.A turn off warnings for failing assertion
_a*+ turn on warnings for anonymous allocators
_A turn off warnings for anonymous allocators
b+ turn on warnings for bad fixed value (not multiple of small)
B* turn off warnings for bad fixed value (not multiple of small)
.b*+ turn on warnings for biased representation
.B turn off warnings for biased representation
c+ turn on warnings for constant conditional
C* turn off warnings for constant conditional
.c+ turn on warnings for unrepped components
.C* turn off warnings for unrepped components
d turn on warnings for implicit dereference
D* turn off warnings for implicit dereference
.d turn on tagging of warnings with -gnatw switch
.D* turn off tagging of warnings with -gnatw switch
e treat all warnings (but not info) as errors
.e turn on every optional info/warning (no exceptions)
E treat all run-time warnings as errors
f+ turn on warnings for unreferenced formal
F* turn off warnings for unreferenced formal
.f turn on warnings for suspicious Subp'Access
.F* turn off warnings for suspicious Subp'Access
g*+ turn on warnings for unrecognized pragma
G turn off warnings for unrecognized pragma
.g turn on GNAT warnings
h turn on warnings for hiding declarations
H* turn off warnings for hiding declarations
.h turn on warnings for holes in records
.H* turn off warnings for holes in records
i*+ turn on warnings for implementation unit
I turn off warnings for implementation unit
.i*+ turn on warnings for overlapping actuals
.I turn off warnings for overlapping actuals
j+ turn on warnings for obsolescent (annex J) feature
J* turn off warnings for obsolescent (annex J) feature
.j+ turn on warnings for late dispatching primitives
.J* turn off warnings for late dispatching primitives
k+ turn on warnings on constant variable
K* turn off warnings on constant variable
.k turn on warnings for standard redefinition
.K* turn off warnings for standard redefinition
l turn on warnings for elaboration problems
L* turn off warnings for elaboration problems
.l turn on info messages for inherited aspects
.L* turn off info messages for inherited aspects
m+ turn on warnings for variable assigned but not read
M* turn off warnings for variable assigned but not read
.m*+ turn on warnings for suspicious modulus value
.M turn off warnings for suspicious modulus value
n* normal warning mode (cancels -gnatws/-gnatwe)
.n turn on info messages for atomic synchronization
.N* turn off info messages for atomic synchronization
o* turn on warnings for address clause overlay
O turn off warnings for address clause overlay
.o turn on warnings for out parameters assigned but not read
.O* turn off warnings for out parameters assigned but not read
p+ turn on warnings for ineffective pragma Inline in frontend
P* turn off warnings for ineffective pragma Inline in frontend
.p+ turn on warnings for suspicious parameter order
.P* turn off warnings for suspicious parameter order
q*+ turn on warnings for questionable missing parenthesis
Q turn off warnings for questionable missing parenthesis
.q+ turn on warnings for questionable layout of record types
.Q* turn off warnings for questionable layout of record types
r+ turn on warnings for redundant construct
R* turn off warnings for redundant construct
.r+ turn on warnings for object renaming function
.R* turn off warnings for object renaming function
s suppress all info/warnings
.s turn on warnings for overridden size clause
.S* turn off warnings for overridden size clause
t turn on warnings for tracking deleted code
T* turn off warnings for tracking deleted code
.t*+ turn on warnings for suspicious contract
.T turn off warnings for suspicious contract
u+ turn on warnings for unused entity
U* turn off warnings for unused entity
.u turn on warnings for unordered enumeration
.U* turn off warnings for unordered enumeration
v*+ turn on warnings for unassigned variable
V turn off warnings for unassigned variable
.v*+ turn on info messages for reverse bit order
.V turn off info messages for reverse bit order
w*+ turn on warnings for wrong low bound assumption
W turn off warnings for wrong low bound assumption
.w turn on warnings on pragma Warnings Off
.W* turn off warnings on pragma Warnings Off
x*+ turn on warnings for export/import
X turn off warnings for export/import
.x+ turn on warnings for non-local exception
.X* turn off warnings for non-local exception
y*+ turn on warnings for Ada compatibility issues
Y turn off warnings for Ada compatibility issues
.y turn on info messages for why pkg body needed
.Y* turn off info messages for why pkg body needed
z*+ turn on warnings for suspicious unchecked conversion
Z turn off warnings for suspicious unchecked conversion
.z*+ turn on warnings for record size not a multiple of alignment
.Z turn off warnings for record size not a multiple of alignment
-gnatW? Wide character encoding method (?=h/u/s/e/8/b)
-gnatx Suppress output of cross-reference information
-gnatX Language extensions permitted
-gnaty Enable default style checks (same as -gnaty3abcefhiklmnprst)
-gnatyxx Enable selected style checks xx = list of parameters:
1-9 check indentation
a check attribute casing
A check array attribute indexes
b check no blanks at end of lines
B check no use of AND/OR for boolean expressions
c check comment format (two spaces)
C check comment format (one space)
d check no DOS line terminators
e check end/exit labels present
f check no form feeds/vertical tabs in source
g check standard GNAT style rules, same as ydISux
h check no horizontal tabs in source
i check if-then layout
I check mode in
k check casing rules for keywords
l check reference manual layout
Lnn check max nest level < nn
m check line length <= 79 characters
Mnn check line length <= nn characters
n check casing of package Standard identifiers
N turn off all checks
o check subprogram bodies in alphabetical order
O check overriding indicators
p check pragma casing
r check casing for identifier references
s check separate subprogram specs present
S check separate lines after THEN or ELSE
t check token separation rules
u check no unnecessary blank lines
x check extra parentheses around conditionals
y turn on default style checks
- subtract (turn off) subsequent checks
+ add (turn on) subsequent checks
-gnatyN Cancel all previously set style checks
-gnatzc Distribution stub generation for caller stubs
-gnatzr Distribution stub generation for receiver stubs
-gnat2012 Ada 2012 mode (default)
-gnat-p Cancel effect of previous -gnatp switch
Report bugs to report@adacore.com
'개발언어' 카테고리의 다른 글
C++ 정적바인딩, 동적바인딩 예제 코드 (0) | 2020.06.21 |
---|---|
[Flask]0x01 기초부터! 이런거구나 싶었던 경험..; (0) | 2019.08.22 |
pwntool 설치 로그 (0) | 2019.08.07 |
[python]pip 업데이트하다가 에러 날 때 해결 (0) | 2019.08.03 |