推动1小于%ecx堆叠

时间:2015-11-14 06:19:43

标签: assembly x86 cpu-registers att

我正在尝试将值pushl $(%ecx - 1) 推送到堆栈。

所以我尝试了这个指令:

as

但是我从fact.s: Assembler messages: fact.s:49: Error: register value used as expression 收到以下错误。

movl %ecx, %edx
subl $1, %edx
pushl %edx

作为一种解决方法,我做了以下事情:

%edx

但是有没有办法在不使用额外寄存器的情况下完成它(在这种情况下为>>> import pandas as pd >>> df = pd.DataFrame({'foo': [1, 2, 3], 'bar': [1.0, 2.0, 3.0], 'baz': ['qux', 'quux', 'quuux']}) >>> df.dtypes bar float64 baz object foo int64 dtype: object )?并在一个指令?

2 个答案:

答案 0 :(得分:5)

没有额外的寄存器?当然。 DEC /推/ INC。一条指令?没有。

decl  %ecx
pushl %ecx
incl  %ecx

答案 1 :(得分:5)

两条指示:

pushl %ecx
subl $1, (%esp)      # or decl (%esp)