15소년우주표류기 (211.♡.39.61)
2026년 4월 22일 PM 10:17
어셈블리 코드로 짰다고 합니다. 어쩐지 표정이 어색하더라니...
section .data
target_msg db "target : sarah cornor", 10, 0
pos_msg db "position x, y", 10, 0
x dd 10 ; 초기값 10 설정
y dd 20 ; 초기값 20 설정
section .text
global _start
_start:
; "target : sarah cornor" 출력
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, target_msg
mov rdx, 22 ; 문자열 길이
syscall
; "position x, y" 출력
mov rax, 1
mov rdi, 1
mov rsi, pos_msg
mov rdx, 15
syscall</code></pre><p>대충 이런 건가요?</p><ul><li><p>타겟 : 세라 코너</p></li><li><p>위치 : x = x + 1, y=y+1 </p></li></ul><p></p><p></p>
댓글 (8)
-
왁왁스천사
04.22 · 125.♡.210.135
-
비비쥬얼씨뿔뿔
→ 왁스천사
04.22 · 180.♡.243.82
와.. 저는 예전에 세월이 흐르고 재미 삼아서 MSX 어셈블리어를 에뮬레이터로 작업한 적이 있었는데..
이제는 기억도 가물가물 하네요. 나이를 먹어서 그런가..
어셈블리어는 x86 어셈블리어가 짱인 것 같아요. 읽기도 편하고 코딩하기도 기능 많은 레지스터가 많아서 편하고요...
arm어셈은 죽었다 깨놔도 못해먹겠더군요. -_- .. 워낙 단순한 명령어들만 있어놔서 그걸 조합해서 뭔가를 만들어야 하는데.. 확실히 RISC쪽 CPU들 명령어가 코딩하기에는 개판 같다는 생각이 들 정도로 힘들어요.
그냥 ARM 쪽은 C컴파일러 쓰는걸로..
-
왁왁스천사
→ 비쥬얼씨뿔뿔
04.22 · 218.♡.126.197
뭐 ARM도 다 주요 패턴이 있어서 돌려쓰고 함수처럼 쓰다 보면 그럭저럭 편합니다.
Thumb 모드가 있어서 바이너리 크기도 작게 쓸 수 있어서 좋은 점도 있더라구요.
명령이 몇 개 안되는건 disassemble 할 때는 의외로 장점입니다. 예전에 Cortex-M0 쓴 키보드 컨트롤러 펌웨어를 분석할 때 명령이 x86처럼 많았으면 꽤나 골치 아팠을 텐데 ARM계열이라 좀 편했습니다.
(키보드 제조사가 버그가 있는데 펌업을 안해줘서 바이너리를 거꾸로 풀어서 결국 해결을 봤어요)
가장 이해가 안됐던 어셈블리 하면 MIPS계열이 기억나네요.
왜 PC (program counter) 레지스터 접근이 따로 안되어서 꼭 RA (return address) 로 돌려 써야 하는지 아직도 이해가 안갑니다.
-
비비쥬얼씨뿔뿔
→ 왁스천사
04.23 · 180.♡.243.82
MIPS는 한번도 안써봤습니다. 대학교 다닐때 전산실에 'MIPS 워크스테이션'이라고 구경한 기억은 나네요. ㅎㅎ 그땐 어셈의 A자도 모를 때라서 뭐 의미는 없지만요.
ARM CPU는 어셈으로 도전하겠다는 생각을 해본적도 없어요. 예전에 HP의 PDA 썼었을때도 Intel XScale ARM Cpu를 사용 했는데.. 그때도 상상도 못했네요. -_- 그당시에는 어셈블리어 현업에서 쓰고 있었는데도 불구하고요.
나중에 디버깅 할때 arm어셈 접하고나서 눈에 익숙하질 않으니 x86어셈을 10년을 넘게 했음에도 눈에 하나도 안들어오고 뭐가 뭔지도 모르겠더군요.
arm은 전부 C로 했고.. 나중에 neon 작업 할때만 도큐먼트 도움받아서 SSE로 작업한 것들 그대로 적용하는 형식으로 프로그래밍 한게 전부입니다 .. ㅎ
-
Bbooknbeer
04.22 · 61.♡.162.10
지금 거의 출시 직전까지 온 느낌입니다.
-
비비쥬얼씨뿔뿔
04.22 · 180.♡.243.82
rax면 64비트 레지스터인데..
저때는.. eax도 아니고 ax같은 16비트 레지스터 썼을거 같네요.. x86이라면요 ㅋㅋ
-
Ccugain
04.23 · 93.♡.243.70
그와중에 린다헤밀턴 ㄷㄷㄷ
-
전전기운동화
04.23 · 67.♡.99.230

T800은 리눅스 돌립니다. 그림 중앙 박스 밑에 잘 보시면 부트 로그에 커널 버젼이 나오죠. ㅎ
Linux Kernel: 4.1.15-1.1381_SKYN12nnmp.
근데 최신 리눅스가 이제 7.0 아니던가요??? ㅋㅋ
댓글을 작성하려면 이 필요합니다.
기억이 가물가물 합니다만, 코드 주석을 보니 RAM bank 가 16kB 단위네요.
그 당시 MSX같은 Z-80 계열들은 8kB bank 를 주로 사용했고, Apple ][+가 16kB 단위의 bank를
썼던 기억이 납니다. ㅋㅋㅋ
저기 제일 자주 나오는 SLOTA EQA $xx 이런 내용은 C로 치면 #define 같은 내용인데, 제작진이 보기에 이 내용들이 왠지 맘에 들었나 봅니다. 꽤나 자주 나오네요 ㅎㅎㅎ