yasm

    1热度

    1回答

    我有这个文件: .code64 pop %rbx 是与下面的指令YASM很好地编译: yasm.exe asm.asm -o asm.bin -m amd64 --parser=gas 我的问题是:有没有办法使用nasm解析器使用intel语法编译64位代码?我不太喜欢AT & T语法

    1热度

    1回答

    我尝试这个代码(使用中断),但它是用于DOS: mov eax, 42 ; write 42 to console mov ecx, 10 ; in decimal out_int_loop: xor edx, edx div ecx push eax add dl, '0' ; one digit mov ah, 2 ; 2 is cod

    2热度

    1回答

    我有一个程序在原始模式下读取字符。也就是说,任何字符输入都会立即被读取,而不是被缓冲。 我想知道如何执行退格。也就是说,当我按Backspace键时,它应该删除左侧的字符并将光标向左移动一个位置。 我试着输出一个Backspace字符后跟一个空格字符。这将删除左侧的字符,但出于某种原因,将光标两个空格向右移动。 我也试过自己输出退格字符。这将光标向左移动一个空格,但不会删除该字符。 我的汇编程序是

    4热度

    3回答

    编辑:标题已更改,因为@Gunner指出,这不是缓冲区溢出。 在从stdin读取用户输入与在Linux 64位Intel汇编NR_read,我不知道如何能够避免不适合在输入缓冲器中的输入被发送到Linux外壳例如。庆典?例如,在这个示例程序中,我定义了一个255字节的输入缓冲区(缓冲区的大小可以是> = 1)。长度超过255字节的输入的其余部分被发送到bash(如果从bash运行)并且这显然是一个

    20热度

    5回答

    在运行程序集时我写了Illegal instruction错误。有没有办法知道哪个指令导致了错误,没有进行调试,因为我运行的机器没有调试器或任何开发系统。换句话说,我在一台机器上编译并运行另一台机器。我无法在我编译的机器上测试我的程序,因为它们不支持SSE4.2。尽管如此,我正在运行该程序的机器确实支持SSE4.2指令。 我想这可能是因为我需要告诉汇编程序(YASM)识别SSE4.2指令,就像我们

    2热度

    1回答

    我有。数据 chars db 'spipopd' 宣布字符的字节数组,我已经设置RDI以指向该阵列 mov rdi, chars 的基本索引在某些时候,我想提出一个字符从数组为8位寄存器。下面的第一条语句产生一个有效值,但第二条语句在输入gdb命令print $r9b时导致r9b包含void。 mov al, [rdi] ; produces valid value in gdb mov

    7热度

    5回答

    我遇到了一个奇怪的问题。我试图安装x264。当执行sudo运行./configure --enable-共享, 这给: 发现没有汇编 最低版本YASM-0.7.0 如果你真的想编译没有ASM,将--disable-ASM配置。 但我已经安装YASM-0.7.0,为了证明这一点,我跑YASM --version,它给了: * YASM 0.7.0.2066 编译于5月8日2012年 版权所有( c)

    1热度

    1回答

    NASM抱歉,不能办理32位绝对搬迁编译就好了,但是当我使用YASM我收到以下错误: hello.asm:12: error: macho: sorry, cannot apply 32 bit absolute relocations in 64 bit mode, consider "[_symbol wrt rip]" for mem access, "qword" and "dq _foo

    0热度

    2回答

    我正在通过一个类似unix的内核开发教程,并且遇到了一个总的noob问题,我确信:谁能告诉我这有什么问题? SOURCES=boot.o main.o CFLAGS=-nostdlib -nostdinc -fno-builtin -fno-stack-protector LDFLAGS=-Tlink.ld ASFLAGS=-felf all: $(SOURCES) link cl

    0热度

    1回答

    代码一切正常,但后来我加了directives to create unwinding data,YASM开始拒绝汇编我的代码。 构建设置是针对x64,通过在自动生成的命令行“-f 64”作为证明:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\"vsyasm.exe -Xvc -f x64 -o "x64\Debug\\"