Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Free Pascal
»
General
(Moderators:
FPK
,
Tomas Hajny
) »
FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
Forum Rules
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
embed .jpg file into .pp ...
by
Thaddy
[
Today
at 09:51:38 am]
AArch64. Fast method to c...
by
LemonParty
[
Today
at 09:47:20 am]
Call SetLength from assem...
by
Thaddy
[
Today
at 09:00:36 am]
Lazarus Main and Gnome/Wa...
by
robert rozee
[
Today
at 08:57:55 am]
Knigo
by
kirchfritz
[
Today
at 08:53:06 am]
TPlaysound problem Ubuntu...
by
jamie
[
Today
at 12:57:32 am]
Portable verion of FPC an...
by
Martin_fr
[
Today
at 12:26:26 am]
[New Component] ExtTabCtr...
by
d7_2_laz
[June 07, 2026, 11:42:02 pm]
Release ray4laz 6.0
by
lazarusprogrammer
[June 07, 2026, 08:02:14 pm]
Where is Lazarus config
by
n7800
[June 07, 2026, 07:49:03 pm]
Auto-vectorization hint/w...
by
Ten_Mile_Hike
[June 07, 2026, 07:31:42 pm]
Splitting Picture into Qu...
by
Dzandaa
[June 07, 2026, 06:16:22 pm]
Lazarus 4.99 - New featur...
by
Martin_fr
[June 07, 2026, 05:46:05 pm]
FPC Unleashed (inline var...
by
Thaddy
[June 07, 2026, 05:27:05 pm]
GDB 17 for Windows
by
Martin_fr
[June 07, 2026, 04:45:35 pm]
Hint not being shown
by
J-G
[June 07, 2026, 03:34:25 pm]
UnoLib - library in Pasca...
by
ackarwow
[June 07, 2026, 02:16:15 pm]
Very rough version of a s...
by
hedgehog
[June 07, 2026, 08:24:00 am]
water filling simulation
by
ADMGNS
[June 06, 2026, 09:54:50 pm]
Array of structure -> str...
by
Seenkao
[June 06, 2026, 09:44:44 pm]
TStringGrid Question
by
J-G
[June 06, 2026, 08:05:52 pm]
Benchmark: converting arr...
by
LemonParty
[June 06, 2026, 03:25:25 pm]
Read/Parse PDB file to ge...
by
marcov
[June 06, 2026, 02:48:12 pm]
[SOVLED]Curved text in La...
by
paweld
[June 06, 2026, 11:00:52 am]
Fast Canvas Library V1.05...
by
microxa
[June 06, 2026, 07:03:07 am]
« previous
next »
Print
Pages: [
1
]
Author
Topic: FPC compiles pusha/popa as a pushaw/popaw. Is it doing right? (Read 1451 times)
Avinash
Full Member
Posts: 126
FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
«
on:
June 05, 2021, 01:11:24 pm »
I would expect PUSHAD/POPAD from 32-bit compiler.
Logged
marcov
Administrator
Hero Member
Posts: 12894
FPC developer.
Re: FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
«
Reply #1 on:
June 05, 2021, 02:34:52 pm »
They have the same opcode, so the meaning is probably set by the mode ? That might be the disassembler at fault. (or whatever the backend assembler accepts, in the case of -a)
Logged
Avinash
Full Member
Posts: 126
Re: FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
«
Reply #2 on:
June 05, 2021, 03:51:48 pm »
Code: Pascal
[Select]
[+]
[-]
{$mode objfpc}
{$asmmode intel}
var
L
:
LongInt
;
begin
asm
xor
eax
,
eax
//pusha
dec eax
//popa
mov L
,
eax
end
;
WriteLn
(
HexStr
(
L
,
8
)
)
;
end
.
FFFFFFFF
Code: Pascal
[Select]
[+]
[-]
{$mode objfpc}
{$asmmode intel}
var
L
:
LongInt
;
begin
asm
xor
eax
,
eax
pusha
dec eax
popa
mov L
,
eax
end
;
WriteLn
(
HexStr
(
L
,
8
)
)
;
end
.
FFFF0000
Logged
PascalDragon
Hero Member
Posts: 6396
Compiler Developer
Re: FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
«
Reply #3 on:
June 05, 2021, 04:56:08 pm »
Yes, this is by design. See this comment from the compiler's source:
Code: Pascal
[Select]
[+]
[-]
{ pushf/popf/pusha/popa have to default to 16 bit in Intel mode
(Intel manual and Delphi-compatbile) -- setting the opsize for
these instructions doesn't change anything in the internal assember,
so change the opcode }
Logged
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Free Pascal
»
General
(Moderators:
FPK
,
Tomas Hajny
) »
FPC compiles pusha/popa as a pushaw/popaw. Is it doing right?
TinyPortal
© 2005-2018