我试图用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
发生了什么事?你能指导我报道吗?
答案 0 :(得分:2)
正如Margaret Bloom所说,-masm=intel
只是一个代码生成选项,这意味着它会影响编译器从C代码生成什么样的程序集。它根本不会影响装配。
您需要在程序集文件中放置.intel_syntax noprefix
指令来切换语法,或者使用复杂的gcc -Wa,--msyntax=intel,-mnaked-reg
方法将参数传递给汇编程序。
完成上述操作后,下一个问题是js rax
无效,因为x86中没有条件间接跳转。最简单的可能是使用反转条件jns
来跳过jmp rax
。