assembly

make: *** 'mykernel.bin' 대상을 생성하는 규칙이 없습니다. 멈추다
assembly

make: *** 'mykernel.bin' 대상을 생성하는 규칙이 없습니다. 멈추다

저는 OS에서 작업 중인데 makefile.win에서 이 오류가 발생합니다. linker.ld 출력 파일이 내가 만들고 있는 파일(mykernel.bin)의 명명 규칙과 일치하지 않는 것 같습니다. 이것이 오류의 원인인지 확실하지 않습니다. 이는 64비트 시스템용으로 제작되었습니다. file.win 생성 ASPARAMS = LDPARAMS = -melf_x86_64 objects = loader.o kernel.o %.o: %.cpp g++ $(GPPPARAMS) -o $@ -c $<...

Admin

간단한 Unix 오디오 인터페이스를 찾고 있습니다.
assembly

간단한 Unix 오디오 인터페이스를 찾고 있습니다.

간단한 Unix 오디오 인터페이스를 찾고 있습니다. 재미삼아 옛날 게임을 포팅해서 x86 어셈블리 언어를 배우고 있습니다. 가장 까다로운 부분은 간단한 사운드(주로 구형파)를 재생하는 방법을 찾는 것입니다. 현재 게임은 스피커에 직접 쓸 수 있을 것으로 예상됩니다. 현재 Unix 시스템에서 오디오를 재생하는 가장 쉬운 방법은 무엇입니까? 기준 보다 정확하게는 이것이 내가 찾고 있는 것입니다(가장 중요한 기준). 파형을 재생할 수 있습니다. (8비트, 8000Hz이면 충분합니다.) 어셈블리 언어에서 ...

Admin

Linux 커널에 자체 부트로더가 있는 이유는 무엇입니까?
assembly

Linux 커널에 자체 부트로더가 있는 이유는 무엇입니까?

Linux 커널 코드를 작업하려고 하는데 다음과 같은 메시지가 나타납니다.이 파일BIOS에서 완전한 부트로더가 실행 중인 것으로 보입니다. 내 인상은 일반적으로 grub이 MBR에 있고 어떻게 든 커널을 호출한다는 것입니다. 내 질문은 다음과 같습니다 (제가 아는 한) 커널에 부트로더가 내장되어 있는 이유는 무엇입니까? 이것이 역사적인 이유인가? 전원 버튼을 누르는 것부터 커널을 부팅하는 것까지 어떤 일이 일어나는지 단계별로 설명해줄 수 있는 사람이 있나요? ...

Admin

연주 지침
assembly

연주 지침

그래서 나는 성능과 어셈블리를 가지고 놀았고 다음 프로그램을 가지고 있습니다. .intel_syntax noprefix .global _start _start: mov cl, 2 mov ebx, 0b101 shr ebx, cl and bl, 1 je do_stuff do_stuff: mov eax, 1 mov ebx, 0 int 0x80 사용하면 perf -e instructions:u ./shift 8개가 아닌 9개의 지침이 표시되는데 이유를 찾을 수 없습니다...

Admin

어셈블리 코드의 연결 문제
assembly

어셈블리 코드의 연결 문제

이것은 내 어셈블리 코드입니다. .section .data mystring: .asciz "Hello world\n" .section .text .globl _start _start: pushl $0 pushl $mystring call printf pushl $0 call exit 내 64비트 우분투 컴퓨터에서 이 코드를 조합하고 연결하려고 합니다.32비트 모드에서. 이 코드는 다음 명령을 사용하여 성공적으로 어셈블되었습니다. as -32 demo.s -o...

Admin

어셈블리의 터미널 시스템 호출
assembly

어셈블리의 터미널 시스템 호출

저는 Linux용 체스 엔진을 작성하고 싶습니다. C/C++ 또는 기타 고급 언어 외부 라이브러리 없이 순수 X64 어셈블리 언어로 작성됩니다. 전체 화면 텍스트/콘솔/터미널 모드에서 실행됩니다. 그래픽 사용자 인터페이스가 없습니다. 유니코드 문자를 사용하여 조각을 표시합니다. Windows 콘솔 API에서 구현하는 방법을 알고 있습니다. 터미널에 직접 액세스하고 글꼴을 유니코드 인식 글꼴로 변경하는 것과 관련된 Linux 커널 시스템 호출은 무엇입니까? 나는 분명히 그것을 조사했지만 주로 32비트에...

Admin

UNIX 시스템은 어떻게 애플리케이션을 호출합니까?
assembly

UNIX 시스템은 어떻게 애플리케이션을 호출합니까?

현재 Arm64 플랫폼용 C 런타임 라이브러리를 구현 중인데, 애플리케이션 실행의 정확한 시점(ELF 파일이 진입점으로 정의됨)에서 환경에 대해 어떤 가정을 할 수 있는지 잘 모르겠습니다. 환경이란 주로 스택 설정과 CPU 레지스터를 의미합니다. 커널 소스 코드를 보고 정보를 종합할 수 있었지만 전부는 아니었습니다. 내 질문은: 응용 프로그램의 호출 규칙이 문서화 및/또는 표준화되어 있습니까? 예를 들어 Arm64 기본 프로시저 호출 표준과 동등한 것을 찾고 있습니다. 나는 특히 Linux에 관심이 ...

Admin

부팅 가능한 이미지를 압축 및 압축 해제하는 방법은 무엇입니까?
assembly

부팅 가능한 이미지를 압축 및 압축 해제하는 방법은 무엇입니까?

Microsoft Windows 11용 MinGW 도구 체인을 사용하여 만든 부팅 가능한 커널 이미지가 있습니다. 프로젝트의 크기는 작지만 "이 이미지 디스크가 플로피 디스크에 담을 수 있을 만큼 커지면 어떻게 축소해야 할까요?"라는 사실을 알고 있습니다. 당신의 생각에 감사드립니다. 편집: 내 Git 계정에서 이 요청에 대한 샘플 OS를 찾을 수 있습니다.바울 32 ...

Admin

시스템 호출 없이 화면에 인쇄하는 어셈블리 코드
assembly

시스템 호출 없이 화면에 인쇄하는 어셈블리 코드

Linux에서는 x86 어셈블러를 작성하여 화면에 문자를 인쇄할 수 있습니까(표준 출력)?아니요어떤 시스템 호출이 사용됩니까? x86 어셈블리에서는 입/출력 작업에 특권이 부여되어 있어 CPU가 RING 0이 아니면 작업을 실행할 수 없기 때문에 이것이 가능하지 않다고 생각합니다. ...

Admin

.*s는 gcc .*c처럼 작동하지 않습니다.
assembly

.*s는 gcc .*c처럼 작동하지 않습니다.

내가 실행하면 gcc -c *.c다음과 같이 실행됩니다. gcc -c file1.c -o file1.o gcc -c file2.c -o file2.o gcc -c file3.c -o file3.o ... 하지만 as *.s실행 중 :- as file1.s -o a.out as file2.s -o a.out as file3.s -o a.out ... 기본적으로 gcc는 객체 파일로 컴파일할 때 파일 확장자만 바꾸지만, gnu는 기본 파일 출력을 a.out으로 설정합니다. 어셈블리 중에 gnu가 .s...

Admin

"objdump -d"보다 더 나은 디스어셈블러?
assembly

"objdump -d"보다 더 나은 디스어셈블러?

objdump -d를 사용하면 어셈블리(Intel 구문 또는 AT&T 구문), 이진 opcode 인코딩 및 주소 번호가 출력된다는 것을 알았습니다 . 내 경우에는 디스어셈블러가 AT&T 어셈블리만 출력하기를 원합니다. 개체 파일에서 어셈블리 파일로 어셈블리를 복사하기 위해 처음 18-24자(예, 계산되지 않음)를 제거하는 것이 귀찮기 때문입니다. ...

Admin

스크립트에서 호출된 어셈블러가 crontab에서 실행될 때 특정 파일을 생성하지 않는 이유는 무엇입니까?
assembly

스크립트에서 호출된 어셈블러가 crontab에서 실행될 때 특정 파일을 생성하지 않는 이유는 무엇입니까?

나는 그것을 사용하고 있다이 스크립트내가 개발한 일부 애플리케이션을 빌드하고 패키징합니다. 스크립트의 전체 내용은 끝에 나열되어 있습니다. 이 crontab 항목에 의해 호출됩니다.50 23 * * * nice $HOME/update-dl-wwwecm $HOME | tee -a $HOME/build-dl-wwwecm/log 디버깅을 위해 스크립트를 테스트 디렉터리에 복사 ~/test/20211101/t/하고 약간 편집했습니다. (스크립트 끝에 하드코딩된 일부 패키지를 제거하는 것과 같습니다.) 또한 ...

Admin

플로피 디스크를 분해하는 방법은 무엇입니까?
assembly

플로피 디스크를 분해하는 방법은 무엇입니까?

nasm -f bin플로피디스크를 분해해서 명령으로 다시 조립하고 싶습니다 . 예를 들어, MS-DOS .img파일을 분해하고 명령을 사용하여 다시 조립하고 싶습니다 nasm -f bin. 나는 ndisasm명령을 사용해 보았습니다 : ndisasm -b 16 File.img ...

Admin

Linux 커널 5.8+에서 쉘코드를 실행하는 방법은 무엇입니까?
assembly

Linux 커널 5.8+에서 쉘코드를 실행하는 방법은 무엇입니까?

내가 실행하려는 어셈블리 코드는 단지 시스템 호출 60입니다. # exit.s .intel_syntax noprefix .section .text .globl _start _start: xor rax, rax mov al, 0x3c xor rdi, rdi xor rdi, 1 syscall as exit.s -o exit.o최종 코드를 얻으려면 assemble, 와 연결하세요.ld exit.o -o exitobjdump -d exit // ret.c const char shellcode[] = ...

Admin