作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在汇编中使用 C 变量。目的是读取一个32位的内存并将其分配给一个C变量。
uint32_t ASMRegRd32(uint32_t addr) {
uint32_t data;
asm volatile (
"ldr %0, [%1]" "\n"
: "=r" (data)
: "r"(addr)
);
return data;
}
ldr
指令返回 64 位值,因为编译器正在选择 64 位操作数 Xt。
ldr w0, [%1];
mov %0, w0;
最佳答案
您使用约束模板修饰符“w”。
asm (
"ldr %w[DST],[%[SRC]]" "\n"
: [DST] "=r" (data) // 32 bit variable
: [SRC] "X" (addr) // source address variable (expands into a x register)
);
关于汇编中的C变量使用,如何在arm aarch64中选择32位操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163693/
我是一名优秀的程序员,十分优秀!