shopkeeper/korean_wiki_content_only_120125 huggingface dataset:
다음날, 레이첼의 아버지는 딸을 병원에서 데리고 나가고, 조나단은 레이첼에 대해 걱정하고 비참해한다. 치료시간에 조나단은 피거 박사에게 레이첼은 어떻게 되냐고 묻는다. 피거 박사는 이제 스스로 자신의 삶을 존중해야 한다고 대답한다. 조나단이 자전거를 훔쳐 병원을 나갔을 때, 피거 박사는 경비원에게 그를 보내주도록 말한다. 조나단은 레이첼의 아버지 집, 절벽으로 간다. 거기서 끝을 내려다보고 있는 레이첼을 찾는다. 조나단은 이번 년도를 같이 보낼 정도로 레이첼을 사랑한다고 말한다. 그들은 같이 걸어간다.
통신 소음() 또는 편안한 잡음(comfort noise)은 라디오 혹은 무선 통신에서 발생하는 인공적인 배경음이다. 대중 매체에서도 간혹 언급되는 것을 볼 수 있으며, 패션및 건축에도 영향을 미친다. 누전 등의 문제로 이어질 수 있기 때문에 주의해야 한다.
《히피 히피 셰이크》()는 아직 개봉되지 않았으며 워킹 타이틀(Working Title Films)이 제작을 맡은 영국 드라마 영화다. 영화는 호주 풍자 매거진 오즈(Oz)의 편집자인 리차드 네빌의 회상록과 그의 여자친구인 루이스 페리어와의 기록을 기반으로 하고 있다. 1960년대 반체제 문화에서 런던판 오즈를 진행시키려 하며, 외설적인 소재로 분류되어 시련을 겪는다. 히피 히피 셰이크는 킬리언 머피를 리차드 네빌로, 시에나 밀러를 루이스로 캐스팅했다.
영국 영화 제작사인 워킹 타이틀은 1998년에 히피 히피 셰이크를 제작하기 시작했으나, 감독과 시나리오 작가가 바뀌면서 영화가 여러차례 지연되었다. 2007년 9월, 영화는 마침내 주요장면 촬영을 시작한다. 2012년 2월까지, 영화는 "아직 미개봉" 상태로 남아있다.
사전제작 지연.
제작은 기대처럼 시작하지 않았다. 워킹 타이틀은 2002년 2월 세자르 카푸르 감독과 톰 버터워스필드가 만든 대본을 기초로 개발을 재시작했다.[6] 다시, 제작은 지연되었다.
2007년 5월, 워킹 타이틀은 이번엔 비번 키드론 감독과 시나리오 작가 리 홀과 함께 히피 히피 셰이크의 제작을 세 번째로 발표했다. 배급은 2007년 가을 제작을 시작하기로 예상하면서 유니버설 픽쳐스가 맡았다.[2]
개봉지연.
2009년 6월, "다르게 만드는 것"이 비번 키드론과 그녀의 남편인 시나리오 작가 리 홀을 후반제작으로 이어갔다.[9] 더 타임즈에 의하면 키드론은 "난 이 영화를 내가 할 수 있는 만큼 오래, 힘들게 작업했으며 이제 그만해야 할 것 같다. 굉장히 거친 작업이었다."2010년 2월 개봉으로 예정이 되어 있었으나, 실현되지 않았다.
《맹렬 우주해적》()는 2012년 1월 8일부터 2012년 7월 1일까지 총 26회로 방송된 애니메이션이다. 원작은 사사모토 유이치가 아사히 노벨에서 연재중인『미니스커트 우주해적(ミニスカ宇宙海賊)』이란 제목의 라이트 노벨로 삽화는 삽화는 마츠모토 노리유키가 담당하고 있다. 2013년 1월 기준으로 일본은 9권 - 한국에선 D&amp;C미디어(L노벨)으 통하여 6권까지 발매된 상태.
이작품의 주인공 『카토 마리카』는 하쿠오 여학원에 다니는 생기발랄한 여고생으로 우주요트부에서의 클럽활동과 메이드 카페 램프관에서의 아르바이트로 바쁜나날을 보내고 있었다. 그러던 어느 날 마리카는 한쌍의 우주해적들에게 죽은 아버지인 '카토 곤자에몬'의 뒤를 이어 우주해적선 벤텐마루의 선장으로 취임해달라는 요청을 받는다. 1세기 전, 독립전쟁의 대혼란속에 발행된 사략선 면허규정에 따르면 선장이 죽은 해적선이 계속 면허를 유지하기 위해서는 죽은 선장의 직계 혈통이 선장 자리를 세습해야 한다고 하는데...
구루메다이가쿠마에역 또는 구루메대학앞역()은 일본 후쿠오카현 구루메시에 있는 규슈 여객철도 규다이 본선의 역이다. 단선 승강장 1면 1선의 구조를 갖춘 지상역이다.
미이역()은 일본 후쿠오카현 구루메시에 있는 규슈 여객철도 규다이 본선의 철도역이다. 상대식 승강장 2면 2선의 구조를 갖춘 지상역이다.
젠도지역()은 일본 후쿠오카현 구루메시에 있는 규슈 여객철도 규다이 본선의 역이다. 상대식 승강장 2면 2선의 구조를 갖춘 지상역이다.
UPS 항공 6편 추락 사고()는 2010년 9월 3일 아랍에미리트 두바이와 독일 쾰른을 오가는 항로를 비행하던 보잉 747-400F는 기내 화재가 발생해 항공기 추락사고로 유일한 탑승객인 승무원 2명이 숨졌다. UPS 항공으로서는 첫 번째 치명적인 항공사고였다. 추락사고는 조종석 연기로부터 여객기를 보호하는 안전절차에 대한 재평가를 촉발했다.
《나이트 플라이트》()는 미국에서 제작된 웨스 크레이븐 감독의 2005년 심리 스릴러 영화이다. 호텔 매니저 리사 라이저트(레이철 매캐덤스 분)가 마이애미로 가는 새벽 비행기 안에서 암살 계획을 세운 테러리스트 잭슨 리프너(킬리언 머피 분)에게 협박을 받는 이야기이다.
2006년 제32회 새턴상에서 최우수 액션·모험·스릴러 영화상, 여우주연상(매캐덤스), 남우조연상(머피) 후보에 올랐다.
리사는 텍사스주 댈러스에서 할머니 장례식에 참석한 후 댈러스 러브 필드에서 플로리다주 마이애미행 심야 비행기(red-eye flight)를 탄다. 체크인 줄에서 리사는 매력적인 남성 잭슨 리프너를 만난다. 탑승할 때 리사는 리프너가 자신과 같은 비행기를 타며 바로 옆자리인 것을 발견한다. 이륙 직후 리프너는 그가 국토 안보부 부장관인 찰스 키프를 암살하려는 테러리스트 집단을 위해서 일한다는 것을 밝힌다.
리사는 키프의 가족이 머무는 마이애미 럭스 애틀랜틱 호텔의 매니저이기에 암살 음모에 필수적이다. 계획은 근처 항구의 배에서 이동식 미사일 발사기를 호텔로 발사하는 것이다. 이를 실행하기 위해 리프너는 리사에게 비행기 위에서 호텔로 전화해 키프가 예약한 방을 항구를 향하고 있는 방으로 바꾸라고 강요한다. 리프너는 리사가 협조를 거부하면 사람을 시켜서 마이애미 자택에 있는 리사의 아버지 조를 죽이겠다고 협박한다.
리사는 조와 키프 둘 다 살릴 수 있는 방법을 찾으려고 노력한다. 첫 호텔 통화 시도에서 동료 신시아가 전화를 받자마자 연결이 끊어지자 리사는 그대로 혼잣말을 이어가며 방을 바꾸라고 명령을 하고 있는 것처럼 리프너를 속이려고 한다. 그 후 리사는 다른 승객들에게 위험을 알리려 하지만 실패한다. 결국 리사는 다시 통화가 연결된 신시아에게 키프를 표적인 방으로 옮기게 한다. 리사는 리프너에게 조의 집 앞에 대기 중인 청부 살인 업자를 물러나게 하라고 요구하지만 리프너는 키프 암살이 이루어질 때까지 기다리라고 한다.
비행기가 마이애미 국제공항에 착륙하자 리사는 리프너를 볼펜으로 공격하고 그의 전화를 빼앗아서 비행기를 나와서 터미널로 도망간다. 리프너와 공항 직원들의 추격을 가까스로 피하면서 밖으로 나온 리사는 근처에 있던 SUV를 훔쳐탄다. 리사는 다시 호텔에 전화해서 신시아에게 위험을 알린다. 신시아는 화재 경보를 켜서 사람들을 건물에서 대피시키는 한편 표적이 된 방에 있던 키프와 그의 가족에게 경고를 하려고 서두른다. 키프와 비밀경호국 요원들은 미사일이 도착하기 몇 초 전 방에서 탈출하는데 성공한다.
리사는 운전을 하며 조에게 전화를 하지만 휴대폰 전원이 꺼져버린다. 서둘러 조의 집에 간 리사는 밖에서 대기하고 있던 청부 살인 업자를 차로 들이받는다. 안에 무사히 있던 조는 911에 전화했다고 말한다. 리사가 호텔에 전화해 확인하는 사이 리프너가 도착해 조를 기절시킨다. 리프너는 칼을 들고 리사를 위협하고 계단 아래로 던져버린다. 리사는 바닥에서 죽은 청부 살인 업자의 총을 집어서 리프너를 위협한다. 도망치려고 하는 리프너에게 리사가 총을 쏜 뒤 리프너는 리사의 총을 뺏고 공격하지만 정신을 되찾은 조가 리프너에게 총을 쏜다. 경찰이 도착하고 리프너는 쓰러진다. 후에 호텔에서 키프가 리사와 신시아에게 다가와 그와 가족을 암살로부터 지켜준 것에 대해 감사한다.
로튼 토마토에서 186개의 평을 바탕으로 79%의 대체로 좋은 평가를 받았으며, 총평은 "좋은 연기와 크레이븐 감독의 탄탄한 연출이 곁들여진 《나이트 플라이트》는 빠르고 경제적인 스릴러"라고 언급하였다. 메타크리틱은 36개의 리뷰를 바탕으로 71%의 점수를 주었으며 이는 대체로 호평을 받았음을 의미한다.
평단은 또한 주연인 레이철 매캐덤스와 킬리언 머피의 연기도 호평했다. 로저 이버트는 평론에서 매캐덤스의 "연기가 현실적이었기 때문에 실감나고 액션이 가중되어도 그럴듯하게 보였다"고 평가했다. 그는 또한 머피가 "인물성을 잘 조율했으며", 매캐덤스와 머피가 "서로 빛을 발했다"고 말했다. 워싱턴 포스트, 롤링 스톤, 엔터테인먼트 위클리, LA 타임스, 뉴욕 타임스, 시카고 선타임스 등 많은 잡지와 신문으로부터도 높은 평가를 받았다.
영화는 북미에서 예산의 두 배인 57,891,803 달러를 벌여들였고 해외에서 37,685,971 달러를 추가로 벌어들이면서 총 수입이 95,577,774 달러가 되었다.
SBS 성우진 (2008년 1월 11일)
백조자리 알파형 변광성(Alpha Cygni variable)은 방사형의 맥동을 보이지 않는 변광성이다. 이는 바람을 불어넣는 풍선처럼 전방향으로 일정하게 부풀어오르는 것이 아니라, 표면 일부가 수축함과 동시에 다른 부분은 팽창한다는 뜻이다. 이런 별은 보통 분광형이 B나 A인 초거성으로, 별개의 맥동 주기 여럿이 맥놀이 현상을 보이면서 밝기가 불규칙하게 변하는 것처럼 보인다.(밝기 진폭은 0.1 정도이다.) 각각의 맥동 주기는 며칠에서 몇 주 정도이다.
템플릿(template)은 다음을 가리킨다.
템플릿()은 C++ 프로그래밍 언어의 한 기능으로, 함수와 클래스가 제네릭 형과 동작할 수 있게 도와준다. 함수나 클래스를 개별적으로 다시 작성하지 않고도 각기 다른 수많은 자료형에서 동작할 수 있게 한다. 이는 튜링 완전 언어로 볼 수 있다.
템플릿은 C++에서 프로그래머들에게 유용한데, 특히 다중 상속과 연산자 오버로딩과 결합할 때 그러하다. C++ 표준 라이브러리는 연결된 템플릿의 프레임워크 안에서 수많은 유용한 함수들을 제공한다.
템플릿의 종류는 함수 템플릿과 클래스 템플릿의 두 가지가 있다. C++14부터는 세번째 템플릿으로 변수 템플릿이 있다.
함수 템플릿.
여러 다른 자료형(int, long, float, double, class... )을 템플릿 인자 ('&lt;...&gt;' 안에 들어가는)로 받아, 함수 내부에서 활용할 수 있도록 한 것이다. 다시 말하면, 여러 다른 자료형에 대하여 같은 역할을 하는 하나의 함수 계열을 하나의 템플릿으로 표현할 수 있다는 점이다. 형태는 아래와 같다.
template &lt;class identifier&gt; function_declaration;
template &lt;typename identifier&gt; function_declaration;
두 표현 모두 같은 의미와 같은 행동을 하도록 되어있다. 다시 말해서 템플릿 안에 들어있는 "class" 키워드와 "typename" 키워드는 동일한 의미이다. "typename" 키워드는 클래스를 생성할 때 활용하는 "class" 키워드와 혼동되지 않도록 나중에 추가된 키워드이다.
예를 들면, C++ STL에 두 값 중에 더 큰 값을 구하는 codice_1 함수가 있다. codice_1 함수는 아래와 같이 정의될 수 있다.
template &lt;typename Type&gt;
Type max(Type a, Type b) {
return a &gt; b ? a : b;
위에 정의된 하나의 함수가, 여러 가지 다른 형태의 자료형(int, double, float)에 대하여 동작을 하게 된다.
int max(int a, int b) {
double max(double a, double b) {
float ...
long ...
// This will call max &lt;int&gt; (by argument deduction)
std::cout « max(3, 7) « std::endl;
// This will call max&lt;double&gt; (by argument deduction)
std::cout « max(3.0, 7.0) « std::endl;
// This type is ambiguous, so explicitly instantiate max&lt;double&gt;
std::cout « max&lt;double&gt;(3, 7.0) « std::endl;
앞 두 형태의 경우 컴파일러는 들어오는 자료 형태를 각각 codice_3와 codice_4로 추론한다. 세 번째 형태는 컴파일러가 추론에 실패한다. 왜냐하면 인자로 넘어오는 두가지 자료형이 정확하게 같다고 정의되어 있기 때문이다. 이럴 경우, 해당 함수 template은 codice_5를 만족하는, 카피 컨스트럭터 형태의 어떠한 형태로도 인스턴스화 된다. 사용자 정의 타입의 경우에는 codice_6연산자가 class의 오버로드 적용을 받아 적법할 때 인스턴스화 된다.
클래스 템플릿.
클래스 템플릿은 클래스를 템플릿 변수에 따라 생성할 수 있게 하는 기능이다. 클래스 템플릿은 컨테이너의 용도로 많이 쓰인다. C++ 표준 라이브러리에는 다수의 템플릿들이 있는데, 벡터와 같은 컨테이너들은 표준 템플릿 라이브러리로부터 유래했다.
정성훈(鄭聖勳, 1978년 11월 1일 ~ )은 한국의 남자 성우다. 2008년 KBS 33기 공채 성우로 데뷔했다.
2015.10.05 ~ 2015.12.25 2015 국악방송 라디오 드라마 설야 (雪夜)
호출 규약()은 컴퓨터 과학에서 서브루틴이나 함수가 호출자로부터 매개변수를 받고 결과를 반환하는 방법에 대한 구현 수준(저수준)의 방식이다. 어떤 코드가 함수를 호출할 때, 매개변수를 해당 함수로 전달하는 방법과 위치, 그리고 결과를 해당 함수에서 반환하는 방법과 위치에 대한 설계 결정이 이루어지며, 이러한 전송은 일반적으로 특정 레지스터를 통해 또는 콜 스택의 스택 프레임 내에서 수행된다. 함수 호출을 준비하고 함수 완료 후 환경을 복원하는 작업을 호출자와 피호출자 간에 어떻게 분할할지에 대한 설계 결정도 있다. 일부 호출 규약은 모든 함수가 호출되어야 하는 방식을 지정한다. 이러한 함수를 사용하는 전체 프로그램의 정확하고 신뢰할 수 있는 실행을 위해 모든 함수 호출에 올바른 호출 규약을 사용해야 한다.
호출 규약은 일반적으로 응용 프로그램 이진 인터페이스 (ABI)의 일부로 간주된다. 이는 호출자와 호출되는 함수 간의 계약으로 간주될 수 있다.
매개변수 및 반환 값의 이름 또는 의미는 응용 프로그램 프로그래밍 인터페이스 (API, ABI와는 대조적으로)에 정의되어 있으며, 이는 ABI 및 호출 규약과는 별개이지만 관련이 있는 개념이다. 전달된 구조체 및 객체 내의 멤버 이름도 API의 일부로 간주되며, ABI의 일부가 아니다. 때로는 API에 함수의 호출 규약을 지정하는 키워드가 포함되기도 한다.
호출 규약은 일반적으로 동적으로 할당된 구조체 및 객체의 수명 처리 정보를 포함하지 않는다. 다른 보조 문서는 할당된 메모리를 해제하는 책임이 어디에 있는지 명시할 수 있다.
호출 규약은 바이트 순서 또는 구조체 패킹과 같이 구조체 및 객체 내의 항목 레이아웃을 지정할 가능성이 낮다.
일부 언어의 경우 호출 규약에 오류 또는 예외 처리 세부 정보가 포함되지만(예: Go, 자바), 다른 언어의 경우 그렇지 않다(예: C++).
원격 프로시저 호출에는 마샬링이라는 유사한 개념이 있다.
호출 규약은 특정 프로그래밍 언어의 평가 전략과 관련될 수 있지만, 대부분의 경우 그 일부로 간주되지 않는다(또는 그 반대). 평가 전략은 일반적으로 더 높은 추상화 수준에서 정의되며 특정 언어의 컴파일러의 저수준 구현 세부 사항이라기보다는 언어의 일부로 간주되기 때문이다.
다른 호출 규약.
호출 규약은 다음과 같은 점에서 다를 수 있다.
단일 플랫폼 내에서의 호출 규약.
때때로 단일 플랫폼에 여러 호출 규약이 나타나기도 한다. 주어진 플랫폼 및 언어 구현은 호출 규약 선택을 제공할 수 있다. 이에 대한 이유는 성능, 다른 인기 언어의 규약 적응, 다양한 "컴퓨팅 플랫폼"에서 부과하는 제한 또는 규약 등이 있다.
많은 아키텍처는 아키텍트가 제안하는 단 하나의 널리 사용되는 호출 규약을 가지고 있다. SPARC, MIPS 및 RISC-V를 포함한 RISC의 경우 이 호출 규약을 기반으로 한 레지스터 이름이 자주 사용된다. 예를 들어, MIPS 레지스터 에서 까지는 "ABI 이름" 에서 를 가지며, 이는 표준 호출 규약에서 매개변수 전달에 사용되는 것을 반영한다. (RISC CPU는 많은 동등한 범용 레지스터를 가지고 있으므로 일반적으로 숫자 외의 이름을 부여해야 할 하드웨어적인 이유는 없다.)
주어진 프로그램 언어의 호출 규약은 기본 플랫폼, OS 또는 링크되는 일부 라이브러리의 호출 규약과 다를 수 있다. 예를 들어, 32비트 윈도우에서는 운영 체제 호출에 stdcall 호출 규약이 있지만, 그곳에서 실행되는 많은 C 프로그램은 cdecl 호출 규약을 사용한다. 이러한 호출 규약의 차이를 수용하기 위해 컴파일러는 종종 주어진 함수의 호출 규약을 지정하는 키워드를 허용한다. 함수 선언에는 사용될 호출 규약을 나타내는 추가 플랫폼별 키워드가 포함된다. 올바르게 처리되면 컴파일러는 함수를 적절한 방식으로 호출하는 코드를 생성한다.
일부 언어는 함수의 호출 규약을 해당 함수로 명시적으로 지정할 수 있다. 다른 언어는 호출 규약을 가지지만 해당 언어 사용자에게는 숨겨져 있으므로 일반적으로 프로그래머가 고려할 사항이 아니다.
x86 (32비트).
X86 아키텍처의 32비트 버전은 다양한 호출 규약과 함께 사용된다. 레지스터의 수가 적고, 단순성과 작은 코드 크기에 대한 역사적 초점으로 인해 많은 x86 호출 규약은 스택을 통해 인수를 전달한다. 반환 값 (또는 그에 대한 포인터)은 레지스터로 반환된다. 일부 규약은 처음 몇 개의 매개변수에 레지스터를 사용하여 성능을 향상시킬 수 있으며, 특히 매우 자주 호출되는 짧고 간단한 리프 루틴(즉, 다른 루틴을 호출하지 않는 루틴)의 경우 더욱 그렇다.
호출 예시:
push EAX ; 일부 레지스터 결과 전달
push dword [EBP+20] ; 일부 메모리 변수 전달 (FASM/TASM 문법)
push 3 ; 일부 상수 전달
call calc ; 반환된 결과는 이제 EAX에 있음
일반적인 피호출자 구조: (아래 지시어 중 일부 또는 전부(ret 제외)는 간단한 프로시저에서 최적화될 수 있다.) 일부 규약은 매개변수 공간을 할당된 상태로 두고 대신 일반 을 사용한다. 이 경우 호출자는 이 예시에서 를 사용하거나 ESP의 변경을 처리할 수 있다.
push EBP ; 이전 프레임 포인터 저장
mov EBP,ESP ; 새 프레임 포인터 가져오기
sub ESP,localsize ; 지역 변수용 스택 공간 예약
. ; 계산 수행, EAX에 결과 저장
mov ESP,EBP ; 지역 변수 공간 해제
pop EBP ; 이전 프레임 포인터 복원
ret paramsize ; 매개변수 공간 해제 및 반환.
x86 아키텍처의 64비트 버전인 X86-64, AMD64, Intel 64는 일반적으로 두 가지 호출 시퀀스를 사용한다. Microsoft가 정의한 호출 시퀀스는 Windows에서 사용되고, AMD64 System V ABI에 명시된 다른 호출 시퀀스는 유닉스 계열 시스템과 일부 변경 사항과 함께 OpenVMS에서 사용된다. x86-64는 32비트 x86보다 더 많은 범용 레지스터를 가지고 있으므로, 두 가지 규약 모두 일부 인수를 레지스터로 전달한다.
ARM (A32).
표준 32비트 ARM 호출 규약은 16개의 범용 레지스터를 다음과 같이 할당한다.
반환되는 값의 크기가 r0 ~ r3에 맞지 않거나 컴파일 시 정적으로 크기를 결정할 수 없는 경우, 호출자는 런타임에 해당 값을 위한 공간을 할당하고 r0에 해당 공간에 대한 포인터를 전달해야 한다.
서브루틴은 r4 ~ r11 및 스택 포인터의 내용을 보존해야 한다(아마도 함수 프롤로그에서 스택에 저장한 다음, 스크래치 공간으로 사용한 다음, 함수 에필로그에서 스택에서 복원하여). 특히, 다른 서브루틴을 호출하는 서브루틴은 해당 다른 서브루틴을 호출하기 전에 링크 레지스터 r14의 반환 주소를 스택에 저장해야 한다. 그러나 이러한 서브루틴은 해당 값을 r14로 반환할 필요가 없으며, 단순히 해당 값을 프로그램 카운터 r15에 로드하여 반환하면 된다.
ARM 호출 규약은 완전 내림차순 스택 사용을 의무화한다. 또한, 스택 포인터는 항상 4바이트 정렬되어야 하며, 공개 인터페이스를 가진 함수 호출 시에는 항상 8바이트 정렬되어야 한다.
이 호출 규약은 "일반적인" ARM 서브루틴이 다음을 수행하도록 한다.
ARM (A64).
64비트 ARM (AArch64) 호출 규약은 31개의 범용 레지스터를 다음과 같이 할당한다.
x로 시작하는 모든 레지스터는 w로 시작하는 해당 32비트 레지스터를 가진다. 따라서 32비트 x0은 w0이라고 불린다.
마찬가지로, 32개의 부동 소수점 레지스터는 다음과 같이 할당된다.
RISC-V ISA.
RISC-V는 부동 소수점 유무에 따라 두 가지 방식의 호출 규약을 정의한다. 가능한 경우 항상 레지스터로 인수를 전달한다.
POWER, PowerPC 및 Power ISA.
POWER, 파워PC, Power ISA 아키텍처는 많은 수의 레지스터를 가지고 있어 대부분의 함수는 단일 레벨 호출에 대한 모든 인수를 레지스터로 전달할 수 있다. 추가 인수는 스택에 전달되며, 레지스터 기반 인수를 위한 공간도 멀티 레벨 호출(재귀적 또는 기타)이 사용되고 레지스터를 저장해야 하는 경우를 대비하여 호출된 함수에 대한 편의를 위해 항상 스택에 할당된다. 이는 와 같은 가변 인자 함수에서도 유용하며, 이 경우 함수의 인수에 배열로 액세스해야 한다. 모든 절차적 언어에 단일 호출 규약이 사용된다.
분기 및 링크 명령어는 반환 주소를 범용 레지스터와 별개인 특수 링크 레지스터에 저장한다. 루틴은 링크 레지스터를 대상 주소로 사용하는 분기 명령어로 호출자에게 반환한다. 리프 루틴은 링크 레지스터를 저장하거나 복원할 필요가 없지만, 비 리프 루틴은 다른 루틴을 호출하기 전에 반환 주소를 저장하고 반환하기 전에 복원해야 한다. 이는 특수 목적 레지스터에서 이동 명령어를 사용하여 링크 레지스터를 범용 레지스터로 이동하고, 필요한 경우 스택에 저장하여 저장한다. 그리고 스택에 저장되었다면 저장된 링크 레지스터 값을 범용 레지스터로 로드한 다음, 특수 목적 레지스터로 이동 명령어를 사용하여 저장된 링크 레지스터 값을 포함하는 레지스터를 링크 레지스터로 이동하여 복원한다.
O32 ABI는 MIPS의 원래 시스템 V ABI 지위로 인해 가장 일반적으로 사용되는 ABI이다. 이는 엄격하게 스택 기반이며, 인수를 전달하는 데 사용할 수 있는 레지스터는 4개뿐이다. 이러한 느리다고 인식되는 속도와 16개 레지스터만 있는 구식 부동 소수점 모델은 다른 많은 호출 규약의 확산을 부추겼다. 이 ABI는 1990년에 형성되었으며 1994년 이후로 업데이트되지 않았다. 32비트 MIPS에 대해서만 정의되어 있지만, GCC는 O64라는 64비트 변형을 만들었다.
64비트의 경우, 실리콘 그래픽스의 N64 ABI (닌텐도 64와는 관련 없음)가 가장 일반적으로 사용된다. 가장 중요한 개선 사항은 이제 8개의 레지스터를 인수 전달에 사용할 수 있다는 점이다. 또한 부동 소수점 레지스터의 수를 32개로 늘린다. 더 작은 코드를 위해 32비트 포인터를 사용하는 N32라는 ILP32 버전도 있으며, 이는 x32 ABI와 유사하다. 둘 다 CPU의 64비트 모드에서 실행된다.
O32를 N32와 더 유사한 32비트 ABI로 대체하려는 몇 가지 시도가 있었다. 1995년 회의에서는 32비트 버전이 상당히 유사한 MIPS EABI가 나왔다. EABI는 MIPS Technologies가 인수 레지스터를 반환 값에 재사용하는 더 급진적인 "NUBI" ABI를 제안하도록 영감을 주었다. MIPS EABI는 GCC에서 지원되지만 LLVM에서는 지원되지 않는다. 둘 다 NUBI를 지원하지 않는다.
O32 및 N32/N64의 모든 경우에 반환 주소는 레지스터에 저장된다. 이는 (점프 및 링크) 또는 (점프 및 링크 레지스터) 명령어 사용 시 자동으로 설정된다. 스택은 아래쪽으로 자란다.
SPARC.
SPARC 아키텍처는 대부분의 RISC 아키텍처와 달리 레지스터 윈도를 기반으로 한다. 각 레지스터 윈도에는 24개의 접근 가능한 레지스터가 있다. 이 중 8개는 "in" 레지스터(%i0-%i7), 8개는 "local" 레지스터(%l0-%l7), 8개는 "out" 레지스터(%o0-%o7)이다. "in" 레지스터는 호출되는 함수에 인수를 전달하는 데 사용되며, 추가 인수는 스택에 푸시되어야 한다. 그러나 호출된 함수는 레지스터 윈도 오버플로, 지역 변수, 그리고 (32비트 SPARC의 경우) 값에 의한 구조체 반환을 처리하기 위해 항상 공간을 할당한다. 함수를 호출하려면 호출될 함수에 대한 인수를 "out" 레지스터에 배치한다. 함수가 호출되면 "out" 레지스터는 "in" 레지스터가 되고 호출된 함수는 "in" 레지스터에 있는 인수에 접근한다. 호출된 함수가 완료되면 반환 값을 첫 번째 "in" 레지스터에 배치하며, 이는 호출된 함수가 반환될 때 첫 번째 "out" 레지스터가 된다.
대부분의 현대 유닉스 계열 시스템이 따르는 System V ABI는 첫 번째 6개의 인수를 "in" 레지스터 %i0에서 %i5까지 전달하며, %i6은 프레임 포인터로, %i7은 반환 주소로 예약한다.
IBM System/360 및 후속 모델.
IBM 시스템/360은 하드웨어 스택이 없는 또 다른 아키텍처이다. 아래 예시는 64비트 Z/아키텍처 도입 이전에 OS/360에서 사용된 호출 규약을 보여준다. System/360의 다른 운영 체제는 다른 호출 규약을 가질 수 있다.
호출 프로그램:
LA 1,ARGS 인수 목록 주소 로드
L 15,=A(SUB) 서브루틴 주소 로드
BALR 14,15 호출된 루틴으로 분기1
ARGS DC A(FIRST) 첫 번째 인수의 주소
DC A(SECOND)
DC A(THIRD)+X'80000000' 마지막 인수2
호출된 프로그램:
SUB EQU * 이것은 서브프로그램의 진입점이다.
표준 진입 시퀀스:
USING *,153
STM 14,12,12(13) 레지스터 저장4
ST 13,SAVE+4 호출자의 저장 영역 주소 저장
LA 12,SAVE 저장 영역 체인
ST 12,8(13)
LR 13,12
표준 반환 시퀀스:
L 13,SAVE+45
LM 14,12,12(13)
L 15,RETVAL6
BR 14 호출자로 반환
SAVE DS 18F 저장 영역7
System/390 ABI 및 Z/아키텍처 ABI(Linux에서 사용됨)에서는 다음과 같다.
추가 인수는 스택에 전달된다.
SuperH.
참고: "preserved"는 피호출자 저장에 해당하며, "guaranteed"도 마찬가지이다.
68k.
모토로라 68000 시리즈의 가장 일반적인 호출 규약은 다음과 같다.
IBM 1130.
IBM 1130은 작은 16비트 워드 주소 지정 가능 기계였다. 레지스터는 6개뿐이었고 조건 지시자가 있었으며 스택은 없었다. 레지스터는 명령어 주소 레지스터(IAR), 누산기(ACC), 누산기 확장(EXT), 그리고 세 개의 인덱스 레지스터 X1–X3이었다. 호출 프로그램은 ACC, EXT, X1, X2를 저장할 책임이 있었다. 서브루틴 호출을 위한 두 가지 의사 연산이 있었다. 메인 프로그램과 직접 연결되는 비재배치 가능 서브루틴을 호출하는 과 전송 벡터를 통해 재배치 가능 라이브러리 서브루틴을 호출하는 이다. 두 의사 연산은 모두 Branch and Store IAR () 기계 명령어로 변환되며, 이 명령어는 다음 명령어의 주소를 유효 주소(EA)에 저장하고 EA+1로 분기한다.
인수는 뒤에 온다. 일반적으로 이는 인수의 한 워드 주소이다. 호출된 루틴은 반환 시 인수를 건너뛸 수 있도록 예상되는 인수 수를 알아야 한다. 또는 인수를 레지스터로 전달할 수도 있다. 함수 루틴은 실제 인수의 경우 ACC에, 또는 Real Number Pseudo-Accumulator (FAC)라고 하는 메모리 위치에 결과를 반환했다. 인수와 반환 주소는 서브루틴의 첫 번째 위치에 저장된 IAR 값에 대한 오프셋을 사용하여 주소 지정되었다.
IBM 1130, CDC 6600, PDP-8(세 컴퓨터 모두 1965년에 출시됨)의 서브루틴은 반환 주소를 서브루틴의 첫 번째 위치에 저장한다.
머신 아키텍처 외부의 호출 규약.
스레드 코드.
스레드 코드는 함수 호출을 설정하고 정리하는 모든 책임을 호출된 코드에 부여한다. 호출 코드는 호출할 서브루틴을 나열하는 것 외에는 아무것도 하지 않는다. 이렇게 하면 모든 함수 설정 및 정리 코드가 함수의 프롤로그와 에필로그라는 한 곳에 배치되며, 함수가 호출되는 많은 곳에 분산되지 않는다. 이는 스레드 코드를 가장 압축적인 호출 규약으로 만든다.
스레드 코드는 모든 인수를 스택으로 전달한다. 모든 반환 값은 스택으로 반환된다. 이로 인해 순진한 구현은 더 많은 값을 레지스터에 유지하는 호출 규약보다 느려진다. 그러나 상위 스택 값 중 일부(특히 반환 주소)를 레지스터에 캐시하는 스레드 코드 구현은 항상 스택에 반환 주소를 푸시하고 팝하는 서브루틴 호출 규약보다 일반적으로 빠르다.
PL/I.
PL/I 언어로 작성된 프로그램의 기본 호출 규약은 모든 인수를 참조에 의해 전달하지만, 다른 규약도 선택적으로 지정할 수 있다. 인수는 다른 컴파일러 및 플랫폼에 따라 다르게 처리되지만, 일반적으로 인수 주소는 메모리의 인수 목록을 통해 전달된다. 최종적인 숨겨진 주소는 반환 값을 포함할 영역을 가리키도록 전달될 수 있다. PL/I가 지원하는 다양한 데이터 유형 때문에 데이터 서술자도 문자 또는 비트 문자열의 길이, 배열의 차원 및 경계(도프 벡터), 자료 구조의 레이아웃 및 내용 등을 정의하기 위해 전달될 수 있다. 상수이거나 호출된 프로시저가 예상하는 인수의 유형과 일치하지 않는 인수에 대해서는 더미 인수가 생성된다.
2012년 안철수 후보의 대선캠프에 합류하여 안후보의 경제 정책을 총괄하는 일을 맡기도 했으나 향후 진로에 관한 이견 차이로 그만두었다. 같은 진보적 경제학자인 김상조의 공정거래위원장 청문회 과정에서 김상조를 “우리보다도 더 깨끗한 사람”이라며 공개적으로 옹호한 바 있다.
흥법사지(興法寺址)는 대한민국 강원특별자치도 원주시에 있는 고려시대의 절터이다. 1984년 6월 2일 대한민국의 강원특별자치도 문화재자료 제45호로 지정되었다.
흥법사는 《고려사》에 기록된 내용으로 보아 신라 때 세워진 것을 알 수 있으며, 임진왜란 때 없어진 것으로 추측된다.
이곳에는 염거화상탑(국보 제104호), 진공대사탑 및 석관(보물 제365호)이 있었는데, 1931년 일본인들에 의해 강제로 반출되었다가 지금은 국립중앙박물관에서 보관하고 있다. 현재는 흥법사지삼층석탑(보물 제464호), 진공대사탑비(보물 제463호)만이 남아있다.
《리트리트》()는 2011년에 개봉된 영국의 독립 공포 스릴러 영화이다. 칼 티비츠의 감독 데뷔작이다. 킬리언 머피, 제이미 벨, 탠디웨이 뉴턴이 섬에 고립된 세 사람의 역할을 맡았다. 한 부부가 군인으로 보이는 자에게서 전 세계를 휩쓸고 있으며 공기로 전염되는 치명적인 질병의 생존자라는 이야기를 듣고 섬에 머문다. 하지만 이들 부부는 실은 미친 사람에 의해 고립되어 있는 것일 수도 있다. 영화는 호평을 받았다.
런던 건축가 마틴 케네디(킬리언 머피 분)와 언론인 아내 케이트(탠디 뉴턴 분)는 스코틀랜드 서쪽의 동떨어진 무인도인 블랙홈섬을 종종 방문하여 휴가(retreat)를 보낸다. 그 섬에 존재하는 유일한 거주 공간인 페어웨더 오두막은 본토에 사는 주인 더그가 계절에 따라 운영하며, 섬은 연락선에 의해서만 대륙과 왕래가 가능하다. 둘은 케이트가 유산을 겪고 나서 위태해진 결혼 생활을 복구하려는 노력으로 이 섬을 다시 방문한다.
섬에서 지낸 지 며칠 지나지 않아 발전기가 폭발하여 마틴은 팔을 부상을 입고 부부는 전력을 잃는다. 부부는 본토와의 유일한 통신 수단인 시민 밴드 라디오를 이용하여 더그에게 배를 타고 와 도와줄 것을 요청한다.
케이트는 다음 날 부두에서 더그가 오기를 기다리지만 더그는 오지 않는다. 대신 전투복 차림의 한 수상쩍은 남자(제이미 벨 분)가 피를 흘리고 거의 의식을 잃고 쓰러진 채로 발견된다. 정신이 돌아온 남자는 자신을 군인인 잭 콜먼 이등병이라고 소개하고 마틴과 케이트에게 공기로 전파되는 아그로모토 플루, 코드명 R1N16이 남미에서 시작돼 몇 주 이내에 전 세계로 번졌으며, 이는 전염성이 높으며 치료가 불가능하고 호흡기 계통을 공격해 본인 피에 목이 막혀 질식해 죽게 되는 치사율 100%의 치명적 바이러스라고 설명한다. 잭은 군이 통제력을 상실했고 민간인들에게 집 안으로 들어가 아무도 들어오지 못하게 하도록 조언하고 있다고 말한다. 시민 밴드 라디오에서 잡음만 흘러나오자 마틴은 잭을 도우며 안전을 도모하기로 한다. 잭은 호전적인 태도로 주도권을 잡고 지시를 내리며, 밀폐된 집에 있는 게 최선이라면서 창문과 문을 널판을 대어 막는다.
며칠 사이에 잭은 이상하고 신경질적으로 행동한다. 부부는 점점 그의 위협적인 행동을 신경쓰게 되고, 심지어 바이러스가 실재하지 않고 잭이 미쳤을 수도 있다고 의심하기 시작한다. 케이트가 잭에게 결혼했냐고 묻자 그는 아내가 R2n16에 걸려서 죽었다고 말하고 공격적이고 위협적으로 변한다. 부부는 오두막을 떠나기로 결정하고, 밖에서 위험을 감수하겠다고 한다. 하지만 잭은 부부를 보내주지 않고 총으로 위협하여 부부를 침실에 가둔다.
마틴은 천장 채광창을 통해 밖으로 도망친 뒤 잔교에서 총에 맞아 숨진 더그와 그의 아내의 시신을 발견한다. 오두막으로 돌아온 마틴은 더그의 사냥용 엽총을 이용하여 잭을 제압한다. 그러나 케이트가 잭의 손을 뒤로 묶기 시작하는 동시에 마틴이 피를 토하기 시작한다. 질병은 사실이고 마틴은 감염된 것처럼 보인다. 케이트는 마틴이 느리고 고통스러운 죽음을 감내하는 대신 편히 갈 수 있도록 마틴을 총으로 쏘게 된다.
잭은 케이트에게 그가 비밀 군사 기지에서 실험을 당했으며 R1N16의 보균자인지도 모른 채 그곳에서 방출되었다고 털어놓는다. 그는 아내가 전염돼 케이트와 같은 방식으로 아내를 죽였고, 이곳에 마틴과 케이트가 있을 줄 모르고 스스로를 격리시키기 위해서 블랙홈섬으로 왔으며, 시민 밴드 라디오가 실은 작동하지만 케이트와 마틴이 더 이상 이를 들을 수 없도록 설정을 바꾸어 놓았을 뿐이라고 말한다.
잭이 라디오를 조정해 작동이 되게 하자 군인들이 바이러스의 백신을 가지고 있다는 군사 방송이 나온다. 잭은 군인들이 거짓말을 하고 있으며, 백신은 없고 군대는 두 사람이 섬을 떠나도록 허락하지 않을 것이라고 말한다. 케이트는 잭을 믿지 않고 마틴이 살 수도 있었다는 생각에 분노해 잭을 쏘아 죽인다. 케이트가 배에 마틴의 시신을 싣고 섬을 떠나려고 할 때 상공의 군용 헬리콥터가 케이트를 포착해 날아오고, 스나이퍼가 케이트의 머리를 쏘아 죽인다.
마틴 역은 킬리언 머피에게 가기 전에 원래 제이슨 아이작스가, 잭 역은 제이미 벨에게 가기 전에 원래 데이비드 테넌트가 맡을 예정이었다. 촬영은 웨일스 귀네드 랜데퀸에서 이루어졌다.
《어둠의 표적》(1971)과 《28일 후》(2002)의 만남으로 홍보되었다.
2011년 10월 14일에 영국에서, 21일에 미국에서 제한적으로 개봉되었다. 한국에서는 개봉하지 않았다.
평단의 반응은 긍정적이었다. 로튼 토마토에서는 13개의 리뷰를 바탕으로 62%라는 긍정 평가를 나타내고 있고, 블러디 디스거스팅도 강렬하고 오싹한 위기와 반전을 호평했다. 가디언지의 피터 브래드쇼는 “신예 감독의 깔끔하고 긴장감 있는 스릴러이며 제이미 벨의 역할이 돋보인다”며 별 5개 만점에 3개를 주었다.
아이다호 주립 대학교(Idaho State University)는 미국 아이다호 포커텔로에 있는 주립대학교이다. 간호학과 약학과 유명하면 아이다호가속기센타, 아이다호국립연구소가 주위에 있어 물리학 원자력공학에 대한 연구가 활발하다.
호출자 정리.
cdecl.
cdecl(←C declaration)은 C 프로그래밍 언어가 기원인 호출 규약으로서 x86 아키텍처용의 수많은 C 컴파일러가 사용한다.
x86에서는 다음의 어셈블리어를 만들어낸다. (AT&amp;T 문법):
.globl caller
pushl %ebp
movl %esp,%ebp
pushl $3
pushl $2
pushl $1
call callee
addl $12,%esp
addl $5,%eax
sub esp, 8 ; make room for the double
fld [ebp + x] ; load our double onto the floating point stack
fstp [esp] ; push our double onto the stack
void _cdecl funct();
syscall.
인수들이 오른쪽에서 왼쪽으로 푸시(push)된다는 점에서 cdecl과 비슷하다. EAX, ECX, EDX는 보존되지 않는다. syscall은 32비트 OS/2 API의 표준 호출 규약이다.
optlink.
인수는 오른쪽에서 왼쪽으로 푸시된다. 맨 왼쪽의 세 개의 인수들이 EAX, EDX, ECX 안에 통과되며 최대 4개의 부동소수점 인수들이 ST(0)에서 ST(3)으로까지 통과된다. 그러나 이들을 위한 공간은 스택 위의 인수 목록 안에 보존된다. 결과는 EAX 또는 ST(0) 안에 반환된다. 레지스터 EBP, EBX, ESI, EDI는 보존된다.
피호출자 정리.
x86의 codice_2 명령의 예는 다음과 같다:
pascal.
파스칼 프로그래밍 언어의 호출 규약을 기반으로 매개변수들은 왼쪽에서 오른쪽 순으로 스택 위에 푸시된다. (cdecl과 반대) 피호출자는 반환 이전에 스택의 균형을 맞추는 일을 한다. 이 호출 규약은 다음의 16비트 API에서 일반적이다: OS/2 1/x, 마이크로소프트 윈도우 3.x, 볼랜드 델파이 버전 1.x.
볼랜드 fastcall의 별칭이다.
stdcall.
stdcall 호출 규약은 마이크로소프트 Win32 API 및 오픈 왓콤 C++의 표준 호출 규약이다. 파스칼 호출 규약의 변형으로서 피호출자는 스택을 정리하는 일을 하지만 매개변수는 _cdecl 호출 규약에서처럼 오른쪽에서 왼쪽 순으로 스택 위로 푸시된다. 레지스터 EAX, ECX, EDX는 함수 내에 사용되도록 규정된다. 반환값은 EAX 레지스터에 저장된다.
fastcall.
fastcall은 표준화된 규약은 아니며 컴파일러 업체에 따라 다르게 처리된다. 일반적으로 fastcall 호출 규약은 레지스터 내 하나 이상의 인수를 통과시키며 호출에 필요한 메모리 접근의 수를 줄인다.
마이크로소프트 fastcall.
마이크로소프트나 GCC codice_3 규약 (codice_4)은 처음 두 개의 인수 (왼쪽에서 오른쪽으로 평가)를 통과시켜 ECX, EDX에 맞춘다. 나머지 인수들은 오른쪽에서 왼쪽 순으로 스택 위로 푸시된다.
볼랜드 fastcall.
왼쪽에서 오른쪽으로 인수를 평가하며 세 개의 인수를 EAX, EDX, ECX를 통해 통과시킨다. 나머지 인수들은 방금과 동일한 방향으로 스택 위로 푸시한다.
왓콤은 별칭을 null로 하는 것을 제외하고 __fastcall 키워드를 지원하지 않는다. 레지스터 호출 규약은 명령 줄 스위치로 선택할 수 있다. (그러나 IDA는 통일성을 위해 __fastcall을 사용한다)
최대 4개의 레지스터가 eax, edx, ebx, ecx 순으로 인수에 할당된다. 인수들은 왼쪽에서 오른쪽으로 레지스터로 할당된다. 어느 인수가 너무 크다는 이유 등으로 레지스터에 할당되지 못한다면 차후 모든 인수들은 스택에 할당된다. 스택에 할당된 인수들은 오른쪽에서 왼쪽으로 푸시된다.
TopSpeed / Clarion / JPI.
처음 4개의 정수 매개변수들이 eax, ebx, ecx, edx 안에 통과된다. 부동소수점 매개변수들은 부동소수점 스택 - 레지스터 st0, st1, st2, st3, st4, st5, st6 위로 통과된다. 구조 매개변수들은 언제나 스택 위로 통과된다. 추가 매개변수들은 레지스터를 다 소진한 뒤 스택 위로 통과된다. 정수값들은 eax 안에, 포인터는 edx 안에, 부동소수점 자료형은 st0에 반환된다.
safecall.
엠파카데로 델파이, 프리 파스칼, 마이크로소프트 윈도우에서 safecall 호출 규약은 COM (컴포넌트 오브젝트 모델) 오류 관리를 요약한 것으로서, 예외들은 호출자에게 노출되지 않지만 COM/OLE에 의해 요구되면 HRESULT 반환값에 보고된다. safecall 함수를 델파이 코드에서 호출할 때 델파이는 자동으로 반환된 HRESULT를 검사하고 필요하면 예외를 발생시킨다.
호출자/피호출자 정리.
thiscall.
thiscall 호출 규약은 마이크로소프트 비주얼 C++ 이상에서만 명시적으로 사용할 수 있다. 그 밖의 다른 컴파일러에서 thiscall은 키워드가 아니다.
이 호출 규약은 C++ 멤버 함수의 호출 규약으로 비정적 멤버 함수를 호출하는데 사용된다. 비정적이란 C++ 클래스의 멤버 함수를 만들 때 static 키워드를 주지 않고 만든 경우(일반적인 경우)를 의미함. 만약, C++ 멤버 함수에 static 키워드가 주어지면 독립함수가 되며(단위함수:쓰레드 단위로 작동이 가능한 함수) 모체를 필요로하지 않게된다. 여기서 모체란 C++ 클래스가 메모리에 인스턴스화되었을 때 가상함수 테이블 포인터 값을 갖고 있는 포인터인 this 포인터를 의미한다. 즉, static 키워드와 함께 멤버 함수를 만들면 일반 호출 규약을 따르는 독립함수가 되고 C++ 과 상관없는 독립함수가 되며 static 키워드가 없으면 모체에 종속적인 멤버 함수가 된다. 이때 모체종속 적인 함수들 즉, 종속적 비정적 멤버 함수들은 thiscall 호출 규약을 따르게 된다. thiscall 호출 규약은 this + call이며 this 포인터를 넘기고 call 을 한다는 의미이다. 이때, this 포인터를 MSVC(마이크로소프트 비주얼 스튜디오) 기준 컴파일러로 보면 ecx 레지스터에 담는다. thiscall 호출 규약은 일련의 어셈블리어로 표현할 경우에 다음과 같다.
mov ecx, this 포인터
call memberfunc
위와 같은 형태로 ecx 레지스터에 this 포인터(C++ 클래스의 인스턴스화된 포인터: 모체포인터)가 담기고 memberfunc 함수는 stdcall 표준호출 규약을 따른다. GCC의 경우 memberfunc 가 cdecl 을 따른다면(누군가 GCC는 확인후 정정 요망!) MSVC의 경우 memberfunc는 stdcall 호출 규약을 따른다. 이때, MSVC 의 컴파일러에 의하여 컴파일된 memberfunc 함수는 기본적으로 ecx 레지스터에 this 포인터가 있다고 가정한체 컴파일러에 의하여 함수가 제조된다. 그렇지만, memberfunc 함수 자체는 stdcall 호출 규약을 따르도록 되어있다.
간단히 종합하면, MSVC 컴파일러로 컴파일된 C++ 바이너리의 경우 thiscall 호출 규약은 ecx 레지스터에 this 포인터를 담은 stdcall 호출 규약으로 설명할 수 있다. ecx 레지스터에 this 포인터를 담을 수 있으면 멤버 함수를 그냥 stdcall 호출 규약 형태로 호출해도 아무 이상없이 작동한다. 이러한 호출 규약을 C++ 호출 규약 또는 thiscall 호출 규약이라 부른다. 주의할 점은 컴파일러마다 this 포인터를 어떤 레지스터에 담을지가 다르다. 일반적으로 통용되는 레지스터는 ecx 레지스터이다. 또한, stdcall 호출 규약을 사용할지 cdecl 호출 규약을 사용할지도 역시 컴파일러의 재량에 달려있다. thicall 호출 규약의 핵심 개념은 this 포인터를 레지스터를 통해서 넘긴다는 약속이며 암묵적(암시적)으로 레지스터에 박아서 넘겨주면 바로 다음에 이어서 호출되는 함수가 이 레지스터의 값을 C++ 인스턴스 값으로 이용한다는 약속이다. 그러므로 컴파일러 종속적인 구현이 될 수 있으나 전반적으로 널리 알려져 사용되는 방식은 MSVC 컴파일러의 ecx 레지스터를 사용하는 방법과 stdcall 호출 규약이 일반적이다.
x86 호출 규약 목록.
이 규약들은 주로 C/C++ 컴파일러용으로 고안되었다. 기타 언어는 구현에 따라 다른 형식과 규약을 갖출 수도 있다.
do-while 루프는 대부분의 컴퓨터 프로그래밍 언어에서 주어진 불리언 자료형 조건을 기반으로 코드가 한 번 실행할 수 있게 하는 제어 흐름문이다. 대부분의 언어와 달리 포트란의 do 루프는 실제로는 for 루프와 같다.
많은 컴퓨터 프로그래밍 언어에서 do while 루프는 코드 블록을 실행한 다음 주어진 부울 조건에 따라 블록을 반복하거나 루프를 종료하는 제어 흐름 문이다.
do while 구조는 프로세스 기호와 조건으로 구성된다. 먼저 블록 내의 코드가 실행된다. 그런 다음 조건이 평가된다. 조건이 true이면 블록 내의 코드가 다시 실행된다. 이는 조건이 거짓이 될 때까지 반복된다.
while 루프는 코드 블록이 실행된 후 조건을 확인한다. 이 제어 구조는 테스트 후 루프로 알려져 있다. 이는 do-while 루프가 종료 조건 루프임을 의미한다. 그러나 while 루프는 블록 내의 코드가 실행되기 전에 조건을 테스트한다.
즉, 항상 코드가 먼저 실행된 다음 표현식이나 테스트 조건이 평가된다. 이 프로세스는 표현식이 true로 평가되는 한 반복된다. 표현식이 거짓이면 루프가 종료된다. while 루프는 명령문의 진실성을 코드 실행에 필요한 조건으로 설정한다. do-while 루프는 조건이 더 이상 참이 아닐 때까지 작업이 계속 실행되도록 한다.
조건이 항상 참으로 평가되는 것이 가능하며 때로는 바람직할 때도 있다. 이로 인해 무한 루프가 생성된다. 무한 루프가 의도적으로 생성되면 일반적으로 루프 종료를 허용하는 또 다른 제어 구조가 있다. 예를 들어, break 문을 사용하면 무한 루프를 종료할 수 있다.
일부 언어에서는 이러한 유형의 루프에 대해 다른 명명 규칙을 사용할 수 있다. 예를 들어 Pascal 및 Lua 언어에는 제어 표현식이 true가 될 때까지 계속 실행된 다음 종료되는 "repeat Until" 루프가 있다. 대조적으로 "while" 루프는 제어 표현식이 true인 동안 실행되고 표현식이 false가 되면 종료된다.
구조체.
아래의 소스는
do_work();
} while (condition);
"continue" 문이 사용되지 않는 한 다음과 같으며
int counter = 5;
int factorial = 1;
factorial *= counter--; /* Multiply, then decrement. */
} while (counter &gt; 0);
printf("factorial of 5 is %d\n", factorial);
System.Console.WriteLine(factorial);
System.out.println(factorial);
var counter = 5;
var factorial = 1;
factorial *= counter--;
console.log(factorial);
액션스크립트 3.
var counter:int = 5;
var factorial:int = 1;
trace(factorial);
with Ada.Integer_Text_IO;
procedure Factorial is
Counter : Integer := 5;
Factorial : Integer := 1;
Factorial := Factorial * Counter;
Counter := Counter - 1;
exit when Counter = 0;
Ada.Integer_Text_IO.Put (Factorial);
end Factorial;
program FactorialProg
integer :: counter = 5
integer :: factorial = 1
factorial = factorial * counter
counter = counter - 1
if (counter == 0) exit
print *, factorial
end program FactorialProg
포트란 90 이후 위의 iteration count가 없는 형태의 do 문과 아래의 do while 문이 추가되었다.
do while (counter &gt; 0)
$counter = 5;
$factorial = 1;
$factorial *= $counter--;
} while ($counter &gt; 0);
print $factorial;
echo $factorial;
아래는 do until 문법만을 보여준다.
래킷.
(set! factorial (* factorial counter))
(set! counter (sub1 counter))
(when (&gt; counter 0) (loop)))
counter = 5
factorial = 1
factorial *= counter
counter -= 1
end while counter &gt; 0
puts factorial
counter := 5.
factorial := 1.
[counter &gt; 0] whileTrue:
[factorial := factorial * counter.
counter := counter - 1].
Transcript show: factorial printString
비주얼 베이직 닷넷.
Dim counter As Integer = 5
Dim factorial As Integer = 1
Loop While counter &gt; 0
Console.WriteLine(factorial)