Comments (3)
Something that might work is, using the "distance til next label" heuristic as the default, but allowing the user to end it early.
An ENDSCOPE
keyword, or ENDSCOPE <arg>
for local labels, would return the current label scope to being nothing. (This is fine; you can continue declaring space/outputting data without a top-level label.)
For example:
AddNTimes::
; Add bc * a to hl.
and a
ret z
.loop
add hl, bc
dec a
jr nz, .loop
ENDSCOPE .loop
ret
ENDSCOPE
nop ; unused
TheNextFunction:
ret
assert SIZEOF(AddNTimes) == 7
assert SIZEOF(AddNTimes.loop) == 4
assert SIZEOF(TheNextFunction) == 1
wFoo:: ds 3
ENDSCOPE wFoo
ds 4 ; unused
wBar:: dw
assert SIZEOF(wFoo) == 3
assert SIZEOF(wBar) == 2
from rgbds.
I am firmly opposed to a ENDSCOPE
keyword as cluttering metadata.
As for "size of X" semantics, what is the size of any of these?
MACRO far_ptr
DW ; Address.
DB ; Bank.
ENDM
PlayerActor:
wActor0:
.y DB
.x DB
.gfx
far_ptr
I'd argue that there are too many possible interpretations, and that the default behaviour would have to be too complex, that this should not be integrated into RGBASM at all.
from rgbds.
...You're right. I could imagine more keyword functionality to control a label's "size", but it would end up being less convenient than LabelEnd - Label
.
from rgbds.
Related Issues (20)
- why can't charmaps be 16-bit HOT 5
- Why canβt use newer 7.0version in nix HOT 3
- Security vulnerability through fuzzing HOT 1
- Allow a color in an inline palette spec to be `none`
- Make sure rgbasm and rgblink report "`<stdin>`" or "`<stdout>`" for `-` as appropriate
- Missing contributing documentation
- INCHARMAP doesn't always produce correct output HOT 1
- Refactoring and style cleanup with C++ HOT 3
- Don't `#include <stdbool.h>`
- Accept multiple exported constants if they agree on a value HOT 3
- Run `strip` on binaries before publishing them
- Check .sym file reported addresses and sorting HOT 4
- CI should verify ROM hashes for all projects
- .sym files are not sorted in ascending order
- Fix CI with Ubuntu 22.04 HOT 3
- `\@` in an `INCLUDE`d file increments at its EOF unless inherited from a parent context HOT 1
- Performance improvements for C++
- math.asm test failure with armv7a-unknown-linux-gnueabihf HOT 6
- can't build HOT 1
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 rgbds.