'Programming/Assembly(어셈블리)'에 해당되는 글 10건

  1. 2016.02.19 .text .data .code .bss ...
  2. 2015.06.13 fasm / nasm / masm
  3. 2015.06.11 어셈블리 관련
  4. 2013.12.12 ia32 어셈블리 언어
  5. 2011.07.31 .DATA? 지시어
  6. 2011.07.17 x86 register 2
  7. 2011.04.04 PowerPC(PPC) 어셈관련 내용
  8. 2010.05.03 어셈블리 메모리 참조 (x86 memory addressing)
  9. 2010.05.03 어셈블리 언어
  10. 2010.04.17 어셈블리 언어 기본 템플릿

어셈부터 다시 공부좀 해봐야 하나... ㅠㅠ


.text는 코드 영역

.data는 초기화 된 변수

.bss는 초기화되지 않은 변수


어짜피 실행파일(elf?) 에서는 stack / heap이 존재할 이유가 없으니

세개정도의 섹션만 분석하면 답이 나오려나..


highest address


=========

| stack |

|   v   |

|       |

|       |

|   ^   |

|  heap |

=========

|  bss  |

=========

| data  |

=========

| text  |

=========


address 0 


[링크 : https://bytes.com/topic/c/answers/854464-text-data-bss]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

fasm / nasm / masm  (0) 2015.06.13
어셈블리 관련  (0) 2015.06.11
ia32 어셈블리 언어  (0) 2013.12.12
.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
Posted by 구차니

Microsoft Macro ASseMbler

masm (16/32bit) / ml64 (64bit)

[링크 : https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler]

[링크 : https://msdn.microsoft.com/en-us/library/afzk3475.aspx]


nasm

Netwide Assembler

[링크 : http://www.nasm.us/]

[링크 : https://en.wikipedia.org/wiki/Netwide_Assembler]


fasm

[링크 : http://flatassembler.net/]

[링크 : https://en.wikipedia.org/wiki/FASM]




[링크 : http://blog.naver.com/asmpro/220205244661]


'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.text .data .code .bss ...  (0) 2016.02.19
어셈블리 관련  (0) 2015.06.11
ia32 어셈블리 언어  (0) 2013.12.12
.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
Posted by 구차니

다시 한번 도전!!! 해봐야지 ㅠㅠ


[링크 : http://todayhumor.com/?programmer_5407]

[링크 : http://stackoverflow.com/questions/8304914/difference-between-dword-ptr-and-dword-ptres]

[링크 : http://en.wikipedia.org/wiki/LOADALL]

[링크 : http://bbolmin.tistory.com/82]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.text .data .code .bss ...  (0) 2016.02.19
fasm / nasm / masm  (0) 2015.06.13
ia32 어셈블리 언어  (0) 2013.12.12
.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
Posted by 구차니
visual studio 에서 디버깅하면 디스어셈블러에서 이상한게 나오는데
알고보니 일종의 포인터 연산 이런거 였다는게 함정..

int _tmain(int argc, _TCHAR* argv[])
{
004113A0  push        ebp  
004113A1  mov         ebp,esp 
004113A3  sub         esp,0CCh 
004113A9  push        ebx  
004113AA  push        esi  
004113AB  push        edi  
004113AC  lea         edi,[ebp-0CCh] 
004113B2  mov         ecx,33h 
004113B7  mov         eax,0CCCCCCCCh 
004113BC  rep stos    dword ptr es:[edi] 
	int a = 0;
004113BE  mov         dword ptr [a],0 
	a++;
004113C5  mov         eax,dword ptr [a] 
004113C8  add         eax,1 
004113CB  mov         dword ptr [a],eax 
	printf("hello world %d\n", a);
004113CE  mov         esi,esp 
004113D0  mov         eax,dword ptr [a] 
004113D3  push        eax  
004113D4  push        offset string "hello world %d\n" (41573Ch) 
004113D9  call        dword ptr [__imp__printf (4182BCh)] 
004113DF  add         esp,8 
004113E2  cmp         esi,esp 
004113E4  call        @ILT+320(__RTC_CheckEsp) (411145h) 
	return 0;
004113E9  xor         eax,eax 
}

rep stos    dword ptr es:[edi]
mov         dword ptr [a],0 
mov         eax,dword ptr [a] 

머.. 자세한건 다시 읽어 봐야겠다.



[링크 : https://www.cs.umd.edu/users/meesh/webpages/cmsc311/links/handouts/ia32.pdf]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

fasm / nasm / masm  (0) 2015.06.13
어셈블리 관련  (0) 2015.06.11
.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
Posted by 구차니
.DATA? 지시어를 사용하여 변수를 선언하면
컴파일된 프로그램의 크기를 줄일수 있다고 한다.
C 언어라던가 일반적인 초기화 되지 않은 변수들을 선언했다고 해서
프로그램 용량이 늘어나는건 아니니 차이를 못느낄수도 있겠지만

x86 계열에서
.data?
bigArray DWORD 5000 DUP(?)
 
는 프로그램의 크기가 늘어나지 않지만

.data
bigArray DWORD 5000 DUP(?)
 
는 프로그램의 크기가 20000 byte 만큼 늘어난다고 한다.

Assembly language for intel-based computer 4th ed. 87page
KIP R. IRVINE 

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

어셈블리 관련  (0) 2015.06.11
ia32 어셈블리 언어  (0) 2013.12.12
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
어셈블리 메모리 참조 (x86 memory addressing)  (0) 2010.05.03
Posted by 구차니
각종 레지스터들의 약자에 대한 이름 풀이이다.
아무튼.. SI는 Stack Index가 아닌 Source Index -_-
S는 은근 헷갈린단 말이야.. OTL

Purpose

Although the main registers (with the exception of the instruction pointer) are "general-purpose" and can be used for anything, it was envisioned that they be used for the following purposes:

  • AX/EAX/RAX: accumulator
  • BX/EBX/RBX: base index (ex: arrays)
  • CX/ECX/RCX: counter
  • DX/EDX/RDX: data/general
  • SI/ESI/RSI: "source index" for string operations.
  • DI/EDI/RDI: "destination index" for string operations.
  • SP/ESP/RSP: stack pointer for top address of the stack.
  • BP/EBP/RBP: stack base pointer for holding the address of the current stack frame.
  • IP/EIP/RIP: instruction pointer. Holds the program counter, the current instruction address.
     
[링크 : http://en.wikipedia.org/wiki/X86_architecture#Purpose]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

ia32 어셈블리 언어  (0) 2013.12.12
.DATA? 지시어  (0) 2011.07.31
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
어셈블리 메모리 참조 (x86 memory addressing)  (0) 2010.05.03
어셈블리 언어  (0) 2010.05.03
Posted by 구차니

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
어셈블리 메모리 참조 (x86 memory addressing)  (0) 2010.05.03
어셈블리 언어  (0) 2010.05.03
어셈블리 언어 기본 템플릿  (0) 2010.04.17
Posted by 구차니
2010/04/22 - [Programming/C / Win32 / MFC] - 변수인데 왜 operation on 'variable' may be undefined 야?

디스어셈블된 내용중에
lea         edi,[ebp-48h]
이러한 부분이 있었는데 []의 의미를 몰랐다가 이제서야 찾아본다.
[]는 C언어의 []와 유사하게 그 변수의 내용을 메모리 번지로 해석해서 그 번지의 내용을 받아오는 연산자이다.
그러니까 ebp의 내용에서 0x48을 뺀 주소를 edi에 저정하라는 의미이다. (LEA)

LEA--Load Effective Address

Opcode

Instruction

Description

8D /r

LEA r16,m

Store effective address for m in register r16

8D /r

LEA r32,m

Store effective address for m in register r32


[링크 : http://www.intel.com/software/.../instruct32_hh/vc150.htm]

8.9.6 메모리 참조
------------------

  인텔문법에서 메모리를 간접적으로 참조하는 형식은 다음과 같다.
    SECTION:[BASE + INDEX*SCALE + DISP]
  이것은 다음과 같은 AT&T 방식으로 참조된다.
    SECTION:DISP(BASE, INDEX, SCALE)

[링크 : http://vozlt.tistory.com/8]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
어셈블리 언어  (0) 2010.05.03
어셈블리 언어 기본 템플릿  (0) 2010.04.17
Posted by 구차니

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
어셈블리 메모리 참조 (x86 memory addressing)  (0) 2010.05.03
어셈블리 언어 기본 템플릿  (0) 2010.04.17
Posted by 구차니
음.. 역시 모든 언어는 skeleton code를 외우면 상대적으로 익히기가 쉬운듯!
(문득 C언어 배울때 #include <stdio.h> void main() {} 하던 기억이.. OTL)

.386
.MODEL Flat, STDCALL
.DATA
; Your initialized data. <comment>
.DATA?
;Your uninitialized data. <comment>
.CONST
.CODE
label:
    end label

[링크 : http://win32assembly.online.fr/tut1.html]

'Programming > Assembly(어셈블리)' 카테고리의 다른 글

.DATA? 지시어  (0) 2011.07.31
x86 register  (2) 2011.07.17
PowerPC(PPC) 어셈관련 내용  (0) 2011.04.04
어셈블리 메모리 참조 (x86 memory addressing)  (0) 2010.05.03
어셈블리 언어  (0) 2010.05.03
Posted by 구차니