64 비트 Linux 시스템에 NASM 프로그램을 작성하여 입력에서 문자가 아닌 기호를 제거하고 각 단어를 별도의 줄에 인쇄합니다. 문제는 내가 RCX = -1 어디 내가 읽은 문자 번호를 얻고, 결과적으로 나는 세분화 오류가 발생한다는 것입니다. 벌써이 버그를 수정하는 방법을 알아 내려고 노력했습니다. 너희들이 나를 도울 수 있기를 바랍니다. 미리 감사드
내가 ASM에서 호출 규칙에 대한 책을 읽은되었으며, 이것은 내가 지금까지 무엇을 가지고 있습니다 : x86(userland) x86(kernel) x64(userland) x64(kernel)
1st arg Stack EBX RDI RDI
2nd arg Stack ECX RSI RSI
3rd arg Stack
작은 프로그램을 x86-64 어셈블리 (AT & T) 구문으로 작성했으며 올바르게 어셈블했지만 예상 한 결과를 얻지 못합니다. 서브 루틴을 수정해야하는 레지스터 %rdi에 변수가 있습니다. 나중에 다른 용도로 사용하기 위해 원래 값을 유지해야합니다. 내가 원하는 것은 push에 스택에 원래의 값을 넣고 서브 루틴이 끝나면 다시 검색합니다. 예를 들어, 변수
NASM 어셈블리에서 Windows API를 사용하려고합니다. 함수 및 기타 등등의 일부 기본 호출입니다. 그래서 MSDN 웹 사이트에서 Beep 기능에 대해 읽었습니다. 두 단어, 빈도 및 기간이라는 두 가지 값이 필요하다고합니다. 나는이 프로그램을 실행하면 NULL equ 0 ; null
global _start ; entry point
extern
x86-64 모드 (인수 포함)에 대한 syscalls 목록을 찾았습니다 : http://filippo.io/linux-syscall-table/ 그러나이 syscalls에 대한 자세한 설명은 어디에서 확인할 수 있습니까? 플래그가 다른 경우에는, 0102o RW (생성)을 제외 '열기'콜을 사용할 수있다 예를 들어 후술 : 읽기 전용, 쓰기 전용 등의 기
어떻게 스택에 64 비트 길이의 주소를 넣을 수 있습니까? 나는이 현재 가지고 : 또한 //setup the stack
push rbp;
mov rbp, rsp;
sub rsp, 80; //80 bytes for stack, 9 args of 64 bits + 64 bits for the function address
mov qword [rbp -
나는 C++로 번역 된 Jack Crenshaw의 놀라운 컴파일러 튜토리얼에 따라 SP4RX라는 자체 프로그래밍 프로그래밍 언어를 개발 중입니다. 필자는 64 비트 우분투 시스템을 기반으로 컴파일러 용 어셈블리를 학습하고 있습니다. 나는 시작으로 부가 프로그램을 만드는 중이라서 :하지만 난 세그먼트 오류를 얻고 코어 덤프 :( section .text
Monodevelop를 사용하는 Linux에서 C#으로 C#으로 하위 집합을 작성 중입니다. 제 컴파일러는 파일에서 텍스트를 읽고 어셈블리로 출력합니다. 이제 내가 얻은 문제는 C# 문제가 아니라 어셈블리 오해라는 점에 유의해야합니다. 나는 어셈블러와 gcc 링커를 사용하고있다. 내가 NASM 어셈블러로이를 컴파일하고 NO 오류 및 NO 경고를 얻을 ext
나는 나의 centos5_x64에서 어셈블리 프로그램을 작성 : 그것은 실행할 수
.data
.global _start
_start:
jmp f0
start:
pop %rsi
xor %rax,%rax
mov %al,7(%rsi)
mov %rsi,8(%rsi)
mov %rax,12(%rsi)
mov $0xb,%al
mov %rsi,%rb