相关疑难解决方法(0)

如何在iPhone上进行内联汇编?

怎么做?我需要采取哪些步骤以及需要考虑哪些陷阱和陷阱?

iphone assembly inline-assembly

29
推荐指数
2
解决办法
1万
查看次数

为什么这个内联汇编不起作用?

对于以下代码:

long buf[64];

register long rrax asm ("rax");
register long rrbx asm ("rbx");
register long rrsi asm ("rsi");

rrax = 0x34;
rrbx = 0x39;

__asm__ __volatile__ ("movq $buf,%rsi");
__asm__ __volatile__ ("movq %rax, 0(%rsi);");
__asm__ __volatile__ ("movq %rbx, 8(%rsi);");

printf( "buf[0] = %lx, buf[1] = %lx!\n", buf[0], buf[1] );
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

buf[0] = 0, buf[1] = 346161cbc0!
Run Code Online (Sandbox Code Playgroud)

它应该是:

buf[0] = 34, buf[1] = 39!
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它不能正常工作,以及如何解决它?

c linux assembly gcc x86-64

10
推荐指数
1
解决办法
9235
查看次数

标签 统计

assembly ×2

c ×1

gcc ×1

inline-assembly ×1

iphone ×1

linux ×1

x86-64 ×1