Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 装配分段故障_Memory_Assembly_Segmentation Fault_Nasm - Fatal编程技术网

Memory 装配分段故障

Memory 装配分段故障,memory,assembly,segmentation-fault,nasm,Memory,Assembly,Segmentation Fault,Nasm,我不熟悉集会。我正在尝试这样做: SECTION .data SECTION .bss SECTION .text global _start _start: nop mov rax, 067FEh mov bx, ax mov cl, bh mov ch, bl nop 每次我运行这个,我都会遇到一个分段错误。我用gdb测试哪里出了问题。我发现每次在mov-rax,067FEh之后,它都表示程序收到了SIGSEGV。我试着用eax

我不熟悉集会。我正在尝试这样做:

SECTION .data

SECTION .bss

SECTION .text
    global _start

_start:
    nop
    mov rax, 067FEh
    mov bx, ax
    mov cl, bh
    mov ch, bl
    nop

每次我运行这个,我都会遇到一个分段错误。我用gdb测试哪里出了问题。我发现每次在
mov-rax,067FEh
之后,它都表示程序收到了SIGSEGV。我试着用eax或ax替换rax。它仍然指出了错误。当我试图在rax中查找值时,它是067FE。我不知道那里发生了什么。有人能帮忙吗?谢谢

将立即数移到寄存器中不会导致segfault。很可能是处理器模式问题。首先,你用的是什么汇编程序?(
nasm
yasm
?)其次,这就是一切吗?CPU在执行
nop
之后应该做什么?第三,您是否告诉您的汇编器输出64位ELF,以便CPU在尝试执行此操作时处于正确的模式?您是否直接执行输出二进制文件?我还希望在文件顶部有一个
[BITS 64]
或类似的指令。您的汇编程序使用的是操作码SRC,DEST还是操作码DEST,SRC?我使用的是nasm。nasm-f elf64-g filename.asm。我在32位Linux中用eax而不是rax和nasm测试了您的代码。它工作时没有发出错误:
nasm-g-f elf32 blub.asm
然后
ld-m elf_i386-static-o blub blub.o
您能执行下一条指令吗?i、 e.,
mov bx,ax