JS指令 - 十六进制代码

时间:2017-02-14 10:39:18

标签: gcc assembly hex 64-bit

我试图用gcc(gcc -c -masm = intel code.s)覆盖asm到hex的错误:code.s:1:错误:'mov'的内存引用太多了。 code.s asm:

<div class = all>
         <div class = "abc">
          <strong> 111 </strong>
           <span> a </span>

           <div class = "abc"> 
             <strong> 222 </strong>
              <span> b</span>
             </div>
           </div>
      </div>
Answer to get 111
//div[contains(@class,"all")]//span[contains(text,"a")]/preceding-sibling::strong
发生了什么事?你能指导我报道吗?

1 个答案:

答案 0 :(得分:2)

正如Margaret Bloom所说,-masm=intel只是一个代码生成选项,这意味着它会影响编译器从C代码生成什么样的程序集。它根本不会影响装配。

您需要在程序集文件中放置.intel_syntax noprefix指令来切换语法,或者使用复杂的gcc -Wa,--msyntax=intel,-mnaked-reg方法将参数传递给汇编程序。

完成上述操作后,下一个问题是js rax无效,因为x86中没有条件间接跳转。最简单的可能是使用反转条件jns来跳过jmp rax