Comments (2)
I located the cause of the issue in smlrc.c
:
if (!isStruct)
{
// This is a special case for initialization of integers smaller than int.
// Since a local integer variable always takes as much space as a whole int,
// we can optimize code generation a bit by storing the initializer as an int.
// This is an old accidental optimization and I preserve it for now.
// Note, this implies a little-endian CPU.
stack[sp - 1][1] = SizeOfWord;
}
It may be worth considering a BIG_ENDIAN
define or some official way to disable this optimization. Or consider ifndef MIPS
around this.
from smallerc.
Yes, that's the place responsible for word-sized initialization of locals.
Off the top of my head, I don't know what else may be broken for big endian CPUs.
There has never been a goal to support big endian CPUs and I should at last document it explicitly.
from smallerc.
Related Issues (20)
- far pointers? HOT 5
- segment datatype support HOT 1
- Using long and float types in 16-bit mode HOT 27
- DOS: how to get segment address HOT 2
- Symbol '__start' not found (was: I wasn't able to compile a simple hello world program) HOT 2
- Code and data in ROM and RAM on 80188? HOT 16
- Is Win16 support doable? HOT 6
- compile error (using clang with asan) HOT 3
- coordinate on testing HOT 3
- Request: targeting a VM? HOT 2
- DOS: 32-bit code segments with 16-bit entry point HOT 9
- Unexpected declaration or expression of type void: Porting an ELF loader to SmallerC HOT 7
- Virus/trojan false positives: SMLRC has many false positives on Windows HOT 15
- Invalid or unsupported command line option '-E' HOT 3
- missing <sys/ioctl.h>, <sys/wait.h>, <dirent.h>, <pwd.h> (optional), and <termio.h> or preferably <termios.h> HOT 1
- Support 32 bit data operations (using stubs) on 16 bit CPUs (small, tiny) HOT 1
- Using cppcheck, found some memory leaks and resource leaks HOT 1
- poor documentation HOT 2
- Symbol '__start' not found (was: very simple C does not work) HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smallerc.