프로그래밍 QnA

declspec의 이미지

동적링킹, 심볼해석, plt, got 등에대한 질문

질문1.
컴파일러에서 함수의 이름을 심볼이라고 하는데
함수의 이름 말고 또 다른 심볼의 종류는 뭐가있나요?
제 생각에는 전역변수와 함수명 이거말고는
심볼이라고 부를게 없는거같은데...

질문2.
그리고 리눅스에서
PLT, GOT 를 이용해서 동적라이브러리의 함수를
호출시 로딩하고(lazy binding)진입주소를 결정하는과정을
봤는데요, 제생각에 PLT, GOT 두개의 테이블이 하는 역할을
그냥 하나의 테이블로도 할 수 있을거같은데... 왜 꼭 PLT, GOT 가 따로 있어야하는지
모르겠네요... 바인딩 과정을 하고나면
GOT 가 동적라이브러리의 함수의 절대주소를 가지고있게되고
PLT 가 GOT 를 참조해서 함수를 호출하게 되는데
그냥 애당초에, 함수의 절대주소를 PLT 가 가지고있도록
동적링커가 해주면 안되나요? 즉 PLT 에서 GOT 로 점프하는 부분을
그냥 실제 함수 진입점으로 점프하게 덮어쓰면 될거같은데...?

declspec의 이미지

동적링킹, 심볼해석, plt, got 등에대한 질문

질문1.
컴파일러에서 함수의 이름을 심볼이라고 하는데
함수의 이름 말고 또 다른 심볼의 종류는 뭐가있나요?
제 생각에는 전역변수와 함수명 이거말고는
심볼이라고 부를게 없는거같은데...

질문2.
그리고 리눅스에서
PLT, GOT 를 이용해서 동적라이브러리의 함수를
호출시 로딩하고(lazy binding)진입주소를 결정하는과정을
봤는데요, 제생각에 PLT, GOT 두개의 테이블이 하는 역할을
그냥 하나의 테이블로도 할 수 있을거같은데... 왜 꼭 PLT, GOT 가 따로 있어야하는지
모르겠네요... 바인딩 과정을 하고나면
GOT 가 동적라이브러리의 함수의 절대주소를 가지고있게되고
PLT 가 GOT 를 참조해서 함수를 호출하게 되는데
그냥 애당초에, 함수의 절대주소를 PLT 가 가지고있도록
동적링커가 해주면 안되나요? 즉 PLT 에서 GOT 로 점프하는 부분을
그냥 실제 함수 진입점으로 점프하게 덮어쓰면 될거같은데...?

익명 사용자의 이미지

C/C++ 자료구조나 알고리즘 문제은행 같은 곳이 있을까요?

방학동안 열심히 프로그래밍 실력을 갈고 닦기 위해 일주일에 최소한 2문제 정도씩은

풀어보려고 하는데 혹시 괜찮은 곳 아시면 추천좀 부탁드려요 ㅜㅜ

uribery의 이미지

zImage에서 뒤에 붙는 부분은 어떤 부분인가요?

안녕하세요.
zImage에 대해서 알아보다고 보니
맨처음 부분은 gzip된 piggy.gz를 푸는 부분등이 들어있다고 알고 있습니다.
그리고 piggy.gz가 있구요.
그런데 그후에도 일부 코드가 있네요.
이부분이 하는 역할은 어떤것인가요?
그럼 좋은 하루되세요~

arrest_05의 이미지

[완료]ARM instruction set에서 BLX에 대한 질문입니다.

안녕하세요 arm공부하다가 진짜 암에걸리겠네요...

질문이 있습니다. arm reference manual BLX instruction에 대해 이해가안가서질문드립니다.

blx의 명령어 구조는 2개가 존재하는데 직접 주소를 쓸대의 instruction의 구조가

| 1 1 1 1 | 1 0 1 | H | signed_immed_24 | 로 나와있는데
여기서 H비트에 대해서 알고싶습니다. 아무리 구글링을 해도 H비트가 설명이 안되어 있더라구요..

기본적으로 24bit immdiate value를 32비트로 sign extension을 한뒤에 다시 2비트를 쉬프트를 통해 최대 +-32mb 영역안으로 jmp한다는건 알겠는데..
여기서 shift한 32비트 값의 bit[1]을 h비트로 설정하는 이유가 뭔지 너무 궁금합니다..

argonz의 이미지

[완료] 인라인어셈 오류......

아래를 컴파일 하면

mov eax, Ch 이 부분에서 operand size conflict 라고 에러가 뜨는 데요

아무 문제 없는 것 같은데 왜 애러가 나는지 잘 모르겠습니다

환경은 visual c++ 6.0 입니다
고수님들 도와주세요 ~~> .<

#include<stdio.h>
char * strchar(char *source,int Ch);
 
void main()
{
 
}
 
char * strchar(char *source,int Ch)
{
	char *tmp= NULL;
	_asm
	{
		mov eax, Ch
	}
	return tmp;
}
<code>
hiluciano의 이미지

자바에서 제네릭 쓸 때...

public final class NumberList<T extends Number>
{
void exec()
{
//int size = sizeof(T); // 이런 부분... 꼭 T의 크기를 구할 필요가 있을 때...
}
}

C++의 sizeof처럼 자바에서도 제네릭 형식의 크기를 구할 수 있는 방법이 없을까요?

munhoney의 이미지

리눅스에서 실행 중인 프로그램(프로세스)를 리부팅(컴퓨터 on/off) 없이 업데이트 하고 싶습니다.

리눅스에서 실행 중인 프로그램(프로세스)를 리부팅(컴퓨터 on/off) 없이 업데이트 하고 싶습니다.
어떤 방법이 가장 좋을까요

지금은 단순하게 파일 다운로드 받아서 system 이용해서 기존 파일 삭제하고 다운로드 받은 파일 이름 바꾸고 이후 실행하는 방식을 취하고 있는데,.. 그건 아닌거 같구요..

혹 다른 방법 없을까요?

munhoney의 이미지

리눅스에서 실행 중인 프로그램(프로세스)를 리부팅(컴퓨터 on/off) 없이 업데이트 하고 싶습니다.

리눅스에서 실행 중인 프로그램(프로세스)를 리부팅(컴퓨터 on/off) 없이 업데이트 하고 싶습니다.
어떤 방법이 가장 좋을까요

지금은 단순하게 파일 다운로드 받아서 system 이용해서 기존 파일 삭제하고 다운로드 받은 파일 이름 바꾸고 이후 실행하는 방식을 취하고 있는데,.. 그건 아닌거 같구요..

혹 다른 방법 없을까요?

cratle의 이미지

javascript event 등록

안녕하세요. javascript event에 대해 질문드립니다.

소스는 아래와 같고요...

페이지

프로그래밍 QnA 구독하기