я только что успешно использовал:
>>> type(tstamp)
pandas.tslib.Timestamp
>>> newDt = tstamp.date()
>>> type(newDt)
datetime.date
Подпрограмма print_string изменяет указатель стека без его восстановления. Подпрограмма main
имеет следующий макет:
push ebp ;save the stack frame of the caller
mov ebp, esp ;save the stack pointer
<code for subroutine>
mov esp, ebp ;restore the stack pointer
pop ebp ;restore the caller's stack frame
ret ;return to address pushed onto the stack by call
Аналогично, подпрограмма print_string должна иметь тот же макет, сохраняя указатель стека, а затем восстанавливая его до ret
ing. Любые подпрограммы, которые используют стек, должны сохранять и восстанавливать указатель стека.
push ebp
mov ebp, esp
pusha
push msg
call printf ;should print "Hello"
add esp, 4
popa
mov esp, ebp
pop ebp
ret
Не сохраняя указатель стека и восстанавливая его, вызываемая подпрограмма изменяет указатель стека, где команда call
сохранила адрес возврата , Следовательно, когда встречается ret
, выполнение переходит к неправильному адресу возврата, поэтому segfault. Подробнее о вызовах и функциях вызова в сборке.