share undefined

opt=-Wl,--no-undefined

 

-Wl,-unresolved-symbols=ignore-in-shared-libs


gcc $opt -shared -o libfa.so -g -O2 1.c -L. -la



ja,无符号数大于时,cf=0 zf=0
jae,无符号数大于等于时,cf=0
jb,无符号数小于时,cf=1
jbe,无符号数小于等于时,cf=1 zf=1
jc,有进位时,cf=1
jcxz,ecx为0时,ecx=0
je,相等时,zf=1
jg,有符号数大于时,zf=0 sf=of
jge,有符号数大于等于时,sf=of
jl,有符号数小于时,sf!=of
jle,有符号数小于等于时,zf=1或者sf!=of
jna,无符号数不大于时,cf=1或者zf=1
jnae,无符号数不小于等于时,cf=1
jnb,无符号数不小于时,cf=0
jnbe,无符号数不小于等于时,cf=0 zf=0
jnc,无进位时,cf=0
jne,不等时,zf=0
jng,有符号数不大于时,zf=1或者sf!=of
jnge,有符号数不大于等于时,sf!=of
jnl,有符号数不小于时,sf=of
jnle,有符号数不小于等于时,zf=0sf=of
jno,有符号数无溢出时,of=0
jnp,奇偶位不为1,pf=0
jns,有符号数不为负时,sf=0
jnz,不为0时,zf=0
jo,有符号数溢出时,of=1
jp,奇偶位为1时,pf=1
js,有符号数为负时,sf=1
jz,为0时,zf=1
 
 
 
 
 
 
被除数	除数	商	余数
AX	reg/mem8	AL	AH
DX:AX	reg/mem16	AX	DX
EDX:EAX	reg/mem32	EAX	EDX
64 位模式下,DIV 指令用 RDX:RAX 作被除数,用 64 位寄存器和内存操作数作除数, 商存放到 RAX,余数存放在 RDX 中
 
 
 
 
被乘数	乘数	乘积
AL	reg/mem8	AX
AX	reg/mem16	DX:AX
EAX	reg/mem32	EDX:EAX
如果乘积的高半部分不为零,则 MUL 会把进位标志位和溢出标志位置 1。因为进位标志位常常用于无符号数的算术运算,在此我们也主要说明这种情况。例如,当 AX 乘以一个 16 位操作数时,乘积存放在 DX 和 AX 寄存器对中。其中,乘积的高 16 位存放在 DX,低 16 位存放在 AX。如果 DX 不等于零,则进位标志位置 1,这就意味着隐含的目的操作数的低半部分容纳不了整个乘积
 
有个很好的理由要求在执行 MUL 后检查进位标志位,即,确认忽略乘积的高半部分是否安全






https://calendars.icloud.com/holidays/cn_zh.ics/







posted @ 2024-08-03 08:54  zJanly  阅读(8)  评论(0编辑  收藏  举报