이 질문은 이전에 물어 보았지만 다른 대답으로는 제 문제가 해결되지 않은 것 같습니다. 어쩌면 내가 놓친 것일까? QEMU에서 실행했기 때문에 .iso가 작동한다는 것을 알고 성공적으로 작동했습니다. 그래서 내가 뭘 잘못하고 있니? bits 16
xor ax, ax
start:
cld ; Set direction flag to forw
이것은 pwnable.kr의 최신 문제입니다. asm.c는 seccomp를 사용하여 write(), open(), read() 및 exit()를 제외한 시스템 호출을 제한합니다. asm.c : #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/mman.h>
#includ
최근에 우리는 부동 소수점 연산에 대해 배웠고 숙제로 몇 가지 질문을했습니다. 그 중 하나는 : "단 정밀도 수레의 호출 규칙을 적어!". 그래서 나는 xmm 레지스터에 대해 알고 배정 밀도의 첫 번째 입력 등 xmm0 및 들어가는 것을 알고있다. Google에서 주제를 찾았지만 대답을 찾을 수 없습니다. 누군가이 질문에 나를 도울 수 있다면 좋을 것입니다
NASM 파일과 C 파일이 있습니다. 내 OS는 우분투 17.04 64 비트 나는 다른 게시물의 지시를 따랐다.이 #include <stdio.h>
int doit(int a, int b);
int main()
{
printf("%d\n", doit(2,4));
return 0;
}
doit.asm :이 global doit
어셈블리와 관련하여 매우 새로운 것으로 프로그램을 사용하려고합니다. 그래서 컴파일 할 때마다, 코드의 주석 아래에 나열된 것처럼 라인에 대한 에러가 발생합니다. 다른 어셈블리 코드에 대해 몇 가지 사항을 정의 할 때 NASM에서이 오류를 감지하는 이유가 있다면 궁금합니다. 어쩌면 주체 정의 방법으로 뭔가를해야합니까? P. 프로그램이 상당히 길기 때문에 코드
나는 프로그램 명령 행 인자로 놀고있다. 특히 문자열 argv [1]에 대한 몇 가지 테스트를 시도하고 있습니다. argv [1]에 주소를 가져 오는 두 단계의 방법을 사용하면 코드가 올바르게 실행됩니다. mov ebx, [ebp+12]
mov eax, [ebx+4] ; address of argv[1]
한 단계를 사용하면 내 프로그램이 지껄입니다.
5000000에서 1까지의 숫자를 인쇄하는 매우 작은 루프 프로그램이 있습니다. 가능한 한 빨리 실행하려고합니다. 저는 NASM과 함께 리눅스 x86-64 어셈블리를 배우고 있습니다. global main
extern printf
main:
push rbx
mov rax,5000000d
print:
push rax
어셈블러와 같은 nasm을 개발 중입니다. 이제 COFF 형식의 파일을 생성하는 프로세스를 코딩합니다. 내 문제는 매우 구체적이며 value이라는 필드가 COFF Symbol Table에 있습니다. 나는 그것을 계산하거나 지정하는 방법을 찾지 못했습니다. 나는 Microsoft Portable Executable and Common Object File F