汇编语句
不安全的 asm 语句支持将汇编代码直接嵌入到 Nim 代码中。 在汇编代码中引用 Nim 的标识符需要包含在特定字符中,该字符可以在语句的编译指示中指定。默认特定字符是 ‘`‘ :
{.push stackTrace:off.}
proc addInt(a, b: int): int =
# a 在 eax 中, b 在 edx 中
asm """
mov eax, `a`
add eax, `b`
jno theEnd
call `raiseOverflow`
theEnd:
"""
{.pop.}
如果使用 GNU 汇编器,则会自动插入引号和换行符:
proc addInt(a, b: int): int =
asm """
addl %%ecx, %%eax
jno 1
call `raiseOverflow`
1:
:"=a"(`result`)
:"a"(`a`), "c"(`b`)
"""
替代:
proc addInt(a, b: int): int =
asm """
"addl %%ecx, %%eax\n"
"jno 1\n"
"call `raiseOverflow`\n"
"1: \n"
:"=a"(`result`)
:"a"(`a`), "c"(`b`)
"""
当前内容版权归 vectorworkshopbaoerjie 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 vectorworkshopbaoerjie .