Commit 412d5a4 Mike Pall
committed
1 parent 90e6551 commit 412d5a4 Copy full SHA for 412d5a4
File tree 1 file changed +7
-4
lines changed
1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -299,11 +299,13 @@ int dasm_link(Dst_DECL, size_t *szp)
299
299
300
300
while (pos != lastpos ) {
301
301
dasm_ActList p = D -> actionlist + b [pos ++ ];
302
+ int op = 0 ;
302
303
while (1 ) {
303
- int op , action = * p ++ ;
304
+ int action = * p ++ ;
304
305
switch (action ) {
305
- case DASM_REL_LG : p ++ ; op = p [-3 ]; goto rel_pc ;
306
- case DASM_REL_PC : op = p [-2 ]; rel_pc : {
306
+ case DASM_REL_LG : p ++ ;
307
+ /* fallthrough */
308
+ case DASM_REL_PC : {
307
309
int shrink = op == 0xe9 ? 3 : ((op & 0xf0 ) == 0x80 ? 4 : 0 );
308
310
if (shrink ) { /* Shrinkable branch opcode? */
309
311
int lofs , lpos = b [pos ];
@@ -335,9 +337,10 @@ int dasm_link(Dst_DECL, size_t *szp)
335
337
case DASM_LABEL_PC : b [pos ++ ] += ofs ; break ; /* Fix label offset. */
336
338
case DASM_ALIGN : ofs -= (b [pos ++ ]+ ofs )& * p ++ ; break ; /* Adjust ofs. */
337
339
case DASM_EXTERN : p += 2 ; break ;
338
- case DASM_ESC : p ++ ; break ;
340
+ case DASM_ESC : op = * p ++ ; break ;
339
341
case DASM_MARK : break ;
340
342
case DASM_SECTION : case DASM_STOP : goto stop ;
343
+ default : op = action ; break ;
341
344
}
342
345
}
343
346
stop : (void )0 ;
You can’t perform that action at this time.
0 commit comments