[英]Can pretty variable names be used for registers in GCC inline assembly?
我有一些內聯匯編。 我希望GCC在選擇要分配的GP寄存器方面有完全的自由。 我還想在程序集內部使用漂亮的名稱來便於理解未來的維護者。 我想我之前(10年前)為ARM 5te做過這個,但現在我在寫一些AArch64代碼時正在摸不着頭腦。
在一個更簡單的例子中,這就是我想要的:
uint32_t arg1 = 1, arg2 = 2, result;
asm volatile(
"add %result, %arg1, %arg2\n"
// Outputs:
: ???
// Inputs:
: ???
// Clobbered:
: ???
);
我想我需要正確的伏都教去我寫的地方“???” 以上。
可能嗎?
是。
[arg1] "r" (arg1)
例如。 兩個名稱(上面的[arg1]
和(arg1)
)可以不同。
在匯編代碼中,您將使用:
add %[result], %[arg1], %[arg2]
文檔鏈接 。
這是您重寫的整個示例(為匯編變量更改了案例,只是為了說明它們不必相同):
uint32_t arg1 = 1, arg2 = 2, result;
asm volatile(
"add %[RESULT], %[ARG1], %[ARG2]\n"
: [RESULT]"=r"(result) /* output */
: [ARG1]"r"(arg1), [ARG2]"r"(arg2) /* inputs */
: /* no clobbers */
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.