[内联汇编]扩展asm:格式、占位符、跳转、内联汇编宏函数

2019-04-23  本文已影响0人  AkuRinbu

使用教材

《汇编语言程序设计》
https://www.jianshu.com/p/8473cd0e92b6
第13章 使用内联汇编

学习资料

GCC-Inline-Assembly-HOWTO
https://ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

Inline Assembler
https://docs.microsoft.com/en-us/cpp/assembler/inline/inline-assembler?view=vs-2019

学习笔记

扩展asm格式
使用占位符
使用替换的占位符
处理跳转
改动的寄存器列表 changed registers
内联汇编宏函数

asm格式

asm ("assembly code")

扩展asm格式

asm ("assembly code" : output locations : input operands : changed registers);

扩展asm格式

使用占位符

使用占位符.png

使用替换的占位符

%[name] "constraint" (variable)

替换的占位符

改动的寄存器列表 changed registers

改动的寄存器列表 changed registers

处理跳转

处理跳转

内联汇编宏函数

内联汇编宏函数

cmp / jge / jmpATT汇编的语法
%0 %1 %2 是占位符,是 扩展asm的规范
0f / 1f 0、1是标号、f是修饰符、是 扩展asm的规范

#APP
# 21 "mactest2.c" 1
    cmp %eax, %edx
    jge 0f
    movl %eax, %eax
    jmp 1f
    0:
    movl %edx, %eax
    1:
# 0 "" 2
#NO_APP

参考资料

[OS64位][019]源码阅读:程序4-5 i=1/0 除法错误
https://www.jianshu.com/p/e14045176526

上一篇下一篇

猜你喜欢

热点阅读