push dword [esp+4] ; push y push dword [esp+4] ; push z call bar add esp, 8 ; cdecl requires caller See pdf. System V Application Binary Interface – Intel™ Architecture Processor Supplement, Fourth Edition, a bit and a bit version. The bit version of standard can be found at and the 64bit version.
|Country:||Republic of Macedonia|
|Published (Last):||18 November 2009|
|PDF File Size:||15.68 Mb|
|ePub File Size:||17.88 Mb|
|Price:||Free* [*Free Regsitration Required]|
I was under the assumption that since the caller is the one that cleans them up, that they should contain the same values after the function call.
Index of /pub/linux/mips/doc/ABI
Here’s the System V C calling conventions for i if you are curious. Comment 8 Alexandre Pereira Nunes Comment 1 Abi3386 Pereira Nunes I’ve not pointed to any ABI that does, however, that was the explanation I’ve got. Where does the C standard make any projections on what the machine should do to accomplish standard abi368 Comment 6 Alexandre Pereira Nunes I’ve seem that gcc packs structures in a very similar if not identical fashion on some targets ixlinux-gnu, arm-elf, mingw without -mms-bitfields, at leastare they covered by sysv ABI too?
Comment 10 Alexandre Pereira Nunes I’ll create some additional creative questions. Comment 9 Richard Biener When a bit-field is inserted into a packed record, the abi368 size of the underlying type is used by one or more same-size adjacent bit-fields that is, if its long: I didn’t expect the type change to force an alignment.
The caller does clean them up but ignores the value.
Lara Dougan 3 wbi386 But the request for better documentation is correct. I don’t think this is quite addressing OP’s concerns. Ahi386 2 Richard Biener What may be confusing is that if one passes a POINTER to a value, then the callee can change that value by dereferencing the pointer, but if the callee actually changes the pointer itself the caller will not 44 that change.
Any changes the called variable makes will be to the original variable in the calling program. Sign up using Email and Password. More serious penalties for repeated cases: Please fix this in LSB 4. R Samuel Klatchko So what I’m asking is: It tends to be somewhat vague about certain things, however Sign up or log in Sign up using Google.
If you pass by value: You are not directly subscribed to this bug’s notifications. So, is the correct stack alignment 4 bytes? None, the status of the bug avi386 updated manually. Search “secondary sources” Textbooks and papers from by reputable publishers. How C code behaves and how the calling conventions work can be quite different.
Index of /~milan/download/micro
Launchpad couldn’t connect to lsbbugs. I am talking about the actual, runtime stack parameters at the machine level and whether or not those stack locations can be modified be the callee.
You may say it’s not worthy, and I would agree, but here is where the “bug” would or would not lie. Since it is very unlikely for gcc to default to 32bit stack alignment, it is highly recommended that functions should have stack aligned at bit before calling functions generated by gcc. Even TAs and profs can find them! When making a function call in Linux or OS X for that mattercan the callee modify the values of the arguments on the stack?
Lectures on Memory
It’s easy to copy from “friends”. Other bug subscribers Subscribe someone else. The original question isn’t so much about the C language, but about a specific implementation as in, if I don’t change it, why does the compiler do so?