일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바스크립트 API
- 자바스크립트 jQuery
- 보안뉴스
- python
- 자바스크립트 prototype
- 파이썬
- 랜섬웨어
- 자바스크립트 객체
- ES6
- 카카오프로젝트
- 보안뉴스요약
- 보안뉴스 요약
- php
- 카카오프로젝트100
- Oracle SQL
- 자바스크립트 node
- 자바스크립트
- 자바스크립트 element api
- 보안뉴스 한줄요약
- 카카오프로젝트 100
- 깃허브
- 자바스크립트 기본 문법
- oracle db
- 다크웹
- oracle
- numpy
- 보안뉴스한줄요약
- javascript
- GIT
- 오라클
- Today
- Total
목록Programming/Assembly (5)
FU11M00N
저번 글과 이어지는 글입니다. https://nevertrustbrutus.tistory.com/95 그럼 test를 마쳤으니 이제 c언어 코드와 어셈블 코드를 링킹 시켜보겠습니다. 전체적인 설계 C에서 가져와야 할 기능을 먼저 생각해봅시다. 어셈블리 언어로 구현하기 힘든 랜덤 값을 가져오려고 합니다. 그러려면 랜덤 시드 값을 초기화(현재시간으로) 시키는 함수와 1~45 사이의 정수를 리턴해줄 함수가 필요할 것입니다. - newtime() : 랜덤 시드 값 초기화(현재시간) - random() : 1~45 사이의 정수 리턴 다음으로는 어셈블리 에서 필요할것같은 기능들을 생각해봅시다. - arr[6] : 로또를 담을 그릇. - main : 메인 함수. - compare_number: 중복되는 숫자가 들어가..
- nasm에서 난수값 뽑기. 어셈블리어(nasm) 환경에서 어떻게하면 난수 값을 뽑아 낼수 있을까요? 난수값을 뽑아내고 로또프로그램까지 한번 시도해봅시다. 필자는 평소 어셈블 코드를 작성할때 sasm 에디터를 많이 사용했는데, c언어 파일에서 난수값을 뽑을려면 경로설정을 따로 해줘야하는게 많습니다. 위의 사진에서 링킹 경로와 nasm.exe 경로 등등 설정해주면 sasm 환경에서 진행하면됩니다. 필자는 경로설정하기가 귀찮아 따로 gcc를 설치해서 cmd창에서 진행하겠습니다. (gcc 폴더에 다 집어 넣을거임 ex. nasm.exe random.c 환경변수 설정 등등) https://sourceforge.net/projects/mingw/ 제일먼저 위의 링크로 들어가 gcc를 다운받습니다. 먼저 sasm..
- PRINT_STRING SASM에서 제공하는 매크로 함수 문자열 출력 함수 형식] PRINT_STRING 매개변수 매개변수 : 출력할 곳의 주소 단, 문자열 종료는 0x00로 표시 입력 받기 공통 매크로 - GET_DEC SASM에서 제공하는 매크로 함수 키보드로 10진수 입력 형식] GET_DEC para1, para2 para1 : 입력할 바이트 수 para2 : 입력 받을 곳으로 레지스터 또는 메모리 주소 - GET_HEX 키보드로 16진수 입력 형식] GET_HEX para1, para2 para1 : 입력할 바이트 수 para2 : 입력 받을 곳으로 레지스터 또는 메모리 주소 - 더하기 연산 더하기는 모든 계산의 가장 기본적인 연산 형식] add para1, para2 para1 : 레지스터..
CPU(Central Processing Unit)? 메모리에 있는 내용을 읽고, 쓰는 데이터를 메모리와 각 레지스터로 보냅니다. 프로그램의 명령을 해석하고 실행합니다 하나의 프로세서는 12~14개의 레지스터를 가지고 있고 CPU가 하고있는 연산, 논리 장치는 숫자와 기호에 관한 연산자를 인식합니다. CPU(Central ProcessingUnit) 레지스터의 종류 범용 레지스터, 상태 레지스터, 플래그 레지스터 가 존재합니다. 레지스터란 레지스터는 CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이다! CPU내부의 기억 장소로 PC가 정보를 처리하기 위해서는 그 정보들이 셀에 저장되어있어야 하는데, 이러한 셀들을 레지스터라고 불리고 8..
어셈블리어란? 0과 1의 이진수로 프로그램을 하는 기계어는 사람이 봤을 때는 알아보는 게 거의 불가능하고 이를 보완해서 나온 언어가 어셈블리 언어입니다. 기계어가 CPU의 종류에 따라 다르기 때문에 어셈블리어와 호환성이 잘되어있지않은 언어입니다. 어셈블리어의 특징 동일한 종류의 프로세스에서만 실행된다. 프로세서에 대한 사전지식이 필요하다. 메모리나 입출력장치, 레지스터 등의 구성요소를 직접 다룰 수 있다. 컴퓨터에서 실행하는 과정 등을 이해하기 쉽다. 고급언어의 특징 자바와 파이썬 같은 고급언어 들은 CPU의 종류가 달라도 컴파일에 지장이 없습니다. CPU의 기본적인 베이스를 알아둬야 합니다. 어셈블리와 비교했을때 코드가 더 짧고 이해하기 쉽습니다. 컴파일러 VS 어셈블러 - 컴파일러 고급언어 프로그램 ..